jsp上传文件(jsp上传文件的问题)

本文目录
- jsp上传文件的问题
- jsp 如何实现文件上传和下载功能
- jsp上传一个文件夹下的所有文件
- jsp 文件上传和下载
- jsp中 input type=file 上传附件的实现原理
- jsp上传文件超时
- jsp怎么实现上传文件到服务器某个文件夹里
- 如何用jsp上传图片到指定文件夹
- jsp上传下载文件的路径问题
jsp上传文件的问题
用JSP实现文件上传功能,参考如下:
UploadExample.jsp
《%@ page contentType="text/html;charset=gb2312"%》
《html》
《title》《%= application.getServerInfo() %》《/title》
《body》
上传文件程序应用示例
《form action="doUpload.jsp" method="post" enctype="multipart/form-data"》
《%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。--%》
请选择要上传的文件《input type="file" name="upfile" size="50"》
《input type="submit" value="提交"》
《/form》
《/body》
《/html》
doUpload.jsp
《%@ page contentType="text/html; charset=GBK" %》
《%@ page import="java.io.*"%》
《%@ page import="java.util.*"%》
《%@ page import="javax.servlet.*"%》
***隐藏网址***
《html》《head》《title》upFile《/title》《/head》
《body bgcolor="#ffffff"》
《%
//定义上载文件的最大字节
int MAX_SIZE = 102400 * 102400;
// 创建根路径的保存变量
String rootPath;
//声明文件读入类
DataInputStream in = null;
FileOutputStream fileOut = null;
//取得客户端的网络地址
String remoteAddr = request.getRemoteAddr();
//获得服务器的名字
String serverName = request.getServerName();
//取得互联网程序的绝对地址
String realPath = request.getRealPath(serverName);
realPath = realPath.substring(0,realPath.lastIndexOf("\\"));
//创建文件的保存目录
rootPath = realPath + "\\upload\\";
//取得客户端上传的数据类型
String contentType = request.getContentType();
try{
if(contentType.indexOf("multipart/form-data") 》= 0){
//读入上传的数据
in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
if(formDataLength 》 MAX_SIZE){
out.println("《P》上传的文件字节数不可以超过" + MAX_SIZE + "《/p》");
return;
}
//保存上传文件的数据
byte dataBytes;
int byteRead = 0;
int totalBytesRead = 0;
//上传的数据保存在byte数组
while(totalBytesRead 《 formDataLength){
byteRead = in.read(dataBytes,totalBytesRead,formDataLength);
totalBytesRead += byteRead;
}
//根据byte数组创建字符串
String file = new String(dataBytes);
//out.println(file);
//取得上传的数据的文件名
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0,saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
//取得数据的分隔字符串
String boundary = contentType.substring(lastIndex + 1,contentType.length());
//创建保存路径的文件名
String fileName = rootPath + saveFile;
//out.print(fileName);
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n",pos) + 1;
pos = file.indexOf("\n",pos) + 1;
pos = file.indexOf("\n",pos) + 1;
int boundaryLocation = file.indexOf(boundary,pos) - 4;
//out.println(boundaryLocation);
//取得文件数据的开始的位置
int startPos = ((file.substring(0,pos)).getBytes()).length;
//out.println(startPos);
//取得文件数据的结束的位置
int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length;
//out.println(endPos);
//检查上载文件是否存在
File checkFile = new File(fileName);
if(checkFile.exists()){
out.println("《p》" + saveFile + "文件已经存在.《/p》");
}
//检查上载文件的目录是否存在
File fileDir = new File(rootPath);
if(!fileDir.exists()){
fileDir.mkdirs();
}
//创建文件的写出类
fileOut = new FileOutputStream(fileName);
//保存文件的数据
fileOut.write(dataBytes,startPos,(endPos - startPos));
fileOut.close();
out.println(saveFile + "文件成功上载.《/p》");
}else{
String content = request.getContentType();
out.println("《p》上传的数据类型不是multipart/form-data《/p》");
}
}catch(Exception ex){
throw new ServletException(ex.getMessage());
}
%》
《/body》
《/html》
运行方法,将这两个JSP文件放在同一路径下,运行UploadExample.jsp即可。
jsp 如何实现文件上传和下载功能
上传:
MyjspForm mf = (MyjspForm) form;// TODO Auto-generated method stub
FormFile fname=mf.getFname();
byte fn = fname.getFileData();
OutputStream out = new FileOutputStream("D:\\"+fname.getFileName());
Date date = new Date();
String title = fname.getFileName();
String url = "d:\\"+fname.getFileName();
Upload ul = new Upload();
ul.setDate(date);
ul.setTitle(title);
ul.setUrl(url);
UploadDAO uld = new UploadDAO();
uld.save(ul);
out.write(fn);
out.close();
下载:
DownloadForm downloadForm = (DownloadForm)form;
String fname = request.getParameter("furl");
FileInputStream fi = new FileInputStream(fname);
byte;
fi.read(bt);
//设置文件是下载还是打开以及打开的方式msdownload表示下载;设置字湖集,//主要是解决文件中的中文信息
response.setContentType("application/msdownload;charset=gbk");
//文件下载后的默认保存名及打开方式
String contentDisposition = "attachment; filename=" + "java.txt";
response.setHeader("Content-Disposition",contentDisposition);
//设置下载长度
response.setContentLength(bt.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(bt);
return null;
jsp上传一个文件夹下的所有文件
jsp上传一个文件夹下的所有文件:
1、上传的upload.jsp:
《%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%》
***隐藏网址***
《html》
《head》
***隐藏网址***
《title》File Upload《/title》
《/head》
《body》
《form method="post" action="UploadServlet" enctype="multipart/form-data"》
Select file to upload:
《input type="file" name="dataFile" id="fileChooser"/》《br/》《br/》
《input type="submit" value="Upload" /》
《/form》
《/body》
《/html》
2、后台servlet:
public class FileUploadExample extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// Parse the request
List items = upload.parseRequest(request);
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();
if (!item.isFormField()) {
String fileName = item.getName();
String root = getServletContext().getRealPath("/");
File path = new File(root + "/uploads");
if (!path.exists()) {
boolean status = path.mkdirs();
}
File uploadedFile = new File(path + "/" + fileName);
System.out.println(uploadedFile.getAbsolutePath());
item.write(uploadedFile);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
jsp 文件上传和下载
1.jsp页面
《s:form action="fileAction" namespace="/file" method="POST" enctype="multipart/form-data"》
《!-- name为后台对应的参数名称 --》
《s:file name="files" label="file1"》《/s:file》
《s:file name="files" label="file2"》《/s:file》
《s:file name="files" label="file3"》《/s:file》
《s:submit value="提交" id="submitBut"》《/s:submit》
《/s:form》
2.Action
//单个文件上传可以用 File files,String filesFileName,String filesContentType
//名称要与jsp中的name相同(三个变量都要生成get,set)
private File files;
// 要以File变量名开头
private String filesFileName;
// 要以File变量名开头
private String filesContentType;
private ServletContext servletContext;
//Action调用的上传文件方法
public String execute() {
ServletContext servletContext = ServletActionContext.getServletContext();
String dataDir = servletContext.getRealPath("/file/upload");
System.out.println(dataDir);
for (int i = 0; i 《 files.length; i++) {
File saveFile = new File(dataDir, filesFileName);
files.renameTo(saveFile);
}
return "success";
}
3.配置上传文件临时文件夹(在struts.xml中配置)
《constant name="struts.multipart.saveDir" value="c:/temp"/》
文件下载
1.下载的url(到Action)
《a href="${pageContext.request.contextPath}/file/fileAction!down.action"》下载《/a》
2.struts.xml配置
《package name="file" namespace="/file" extends="struts-default"》
《action name="fileAction" class="com.struts2.file.FileAction"》
《!-- 下载文件配置 --》
《!--type 为 stream 应用 StreamResult 处理--》
《result name="down" type="stream"》
《!--
不管实际类型,待下载文件 ContentType 统一指定为 application/octet-stream
默认为 text/plain
--》
《param name="contentType"》application/octet-stream《/param》
《!--
默认就是 inputStream,它将会指示 StreamResult 通过 inputName 属性值的 getter 方法,
比如这里就是 getInputStream() 来获取下载文件的内容,意味着你的 Action 要有这个方法
--》
《param name="inputName"》inputStream《/param》
《!--
默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文
件保有存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名,
这里使用的是动态文件名,${fileName}, 它将通过 Action 的 getFileName() 获得文件名
--》
《param name="contentDisposition"》attachment;filename="${fileName}"《/param》
《!-- 输出时缓冲区的大小 --》
《param name="bufferSize"》4096《/param》
《/result》
《/action》
《/package》
3.Action
//Action调用的下载文件方法
public String down() {
return "down";
}
//获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容
public InputStream getInputStream() throws Exception {
String dir = servletContext.getRealPath("/file/upload");
File file = new File(dir, "icon.png");
if (file.exists()) {
//下载文件
return new FileInputStream(file);
//和 Servlet 中不一样,这里我们不需对输出的中文转码为 ISO8859-1
//将内容(Struts2 文件下载测试)直接写入文件,下载的文件名必须是文本(txt)类型
//return new ByteArrayInputStream("Struts2 文件下载测试".getBytes());
}
return null;
}
// 对于配置中的 ${fileName}, 获得下载保存时的文件名
public String getFileName() {
String fileName ="图标.png";
try {
// 中文文件名也是需要转码为 ISO8859-1,否则乱码
return new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
return "icon.png";
}
}
jsp中 input type=file 上传附件的实现原理
当一个form表单 被设置为enctype="MULTIPART/FORM-DATA" method="post" 时,其中的〈input type="file" name="filename" /》 标签如果被用户 选择了文件的话.
浏览器会把 文件内容连同 form的所有字段 格式化后传递到服务器~~
如下
一个测试:
《!--f.jsp--》
《%@ page contentType="text/html;charset=GB2312"%》
《HTML》
《BODY》
《p》选择要上传的文件:《BR》
《FORM action="accept.jsp" method="post" ENCTYPE="multipart/form-data"》
《INPUT type=FILE name="boy" size="38"》
《BR》
《INPUT type="hidden" id="tt" name="t" value="1"》
《INPUT type="submit" id="gg" name="g" value="提交"》
《/BODY》
《/HTML》
处理:
《!--accept.jsp--》
《%@ page contentType="text/html;charset=GB2312"%》
《%@ page import="java.io.*"%》
《HTML》
《BODY》
《%try{InputStream in=request.getInputStream();
File f=new File("f:\\qin\\jsp","a.txt");
FileOutputStream o=new FileOutputStream(f);
byte b;
int n;
while((n=in.read(b))!=-1)
{o.write(b,0,n);
}
o.close();
in.close();
}
catch(IOException ee){}
out.print("文件已经上传");
%》
《/body》
《/HTML》
jsp上传文件超时
在tomcat中配置连接超时间。根据查询CSDN官网显示,tomcat中配置了一个连接超时时间connectionTimeout,在这个时间之后客户端还未得到服务器端的响应的话就会主动断开连接,这样就会出现上述异常了,tomcat中默认的连接超时时间是20秒,最好设置为60秒,从而避免后台程序处理时间长导致连接断开。
jsp怎么实现上传文件到服务器某个文件夹里
把文件数据提交到服务端,
只需要form表单就可以了,
《form method="post" enctype="multipart/form-data" action=""》
《input type="file"》
《/form》
action就接收文件的地址,
就是你要写保存文件的那个地址。
然后要写保存文件的代码,好吧,让你失望了,手头没有,回头找一下……
如何用jsp上传图片到指定文件夹
String time = new SimpleDateFormat("yyyyMMddHHmmss")
.format(Calendar.getInstance().getTime());// 得到系统时间
// 上传技术
SmartUpload up = new SmartUpload();
// 进行初始化
up.initialize(this.getServletConfig(), request, response);
// 开始上传
try {
up.upload("utf-8");//设置编码方式。
int id = Integer.parseInt(up.getRequest().getParameter("id"));// 商品编号
SmartFiles sf = up.getFiles();// 得到上传的所有图片
SmartFile file = sf.getFile(0);// 根据索引得到上传图片 多个图片可以用循环:
String type = file.getFileExt();// 得到图片后缀名
String folder = "tp/";// 指定文件夹
String path = folder + time + "." + type;// 路径
System.out.println(path + "路径");
file.saveAs(request.getRealPath("/") + path);// 保存图片
} catch (Exception e) {
e.printStackTrace();
}
//你搞个邮箱我把SmartUploadjar包 发给你吧。 //设置from提交
/*《form action="SellerServet" method="post"
enctype="multipart/form-data"》*/ // 加上 enctype="multipart/form-data
jsp上传下载文件的路径问题
jsp上传下载文件的路径是在服务器建立指定路径如下:
//接收上传文件内容中临时文件的文件名
String tempFileName = new String("tempFileName");
//tempfile 对象指向临时文件
File tempFile = new File("D:/"+tempFileName);
//outputfile 文件输出流指向这个临时文件
FileOutputStream outputStream = new FileOutputStream(tempFile);
//得到客服端提交的所有数据
InputStream fileSourcel = request.getInputStream();
//将得到的客服端数据写入临时文件
byte b;
int n ;
while ((n=fileSourcel.read(b))!=-1){
outputStream.write(b,0,n);
}
//关闭输出流和输入流
outputStream.close();
fileSourcel.close();
//randomFile对象指向临时文件
RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r");
//读取临时文件的第一行数据
randomFile.readLine();
//读取临时文件的第二行数据,这行数据中包含了文件的路径和文件名
String filePath = randomFile.readLine();
//得到文件名
int position = filePath.lastIndexOf(’\\’);
CodeToString codeToString = new CodeToString();
String filename = codeToString.codeString(filePath.substring(position,filePath.length()-1));
//重新定位读取文件指针到文件头
randomFile.seek(0);
//得到第四行回车符的位置,这是上传文件数据的开始位置
long forthEnterPosition = 0;
int forth = 1;
while((n=randomFile.readByte())!=-1&&(forth《=4)){
if(n==’\n’){
forthEnterPosition = randomFile.getFilePointer();
forth++;
}
}
//生成上传文件的目录
File fileupLoad = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file","upLoad");
fileupLoad.mkdir();
//saveFile 对象指向要保存的文件
File saveFile = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad",filename);
RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw");
//找到上传文件数据的结束位置,即倒数第四行
randomFile.seek(randomFile.length());
long endPosition = randomFile.getFilePointer();
int j = 1;
while((endPosition》=0)&&(j《=4)){
endPosition--;
randomFile.seek(endPosition);
if(randomFile.readByte()==’\n’){
j++;
}
}
//从上传文件数据的开始位置到结束位置,把数据写入到要保存的文件中
randomFile.seek(forthEnterPosition);
long startPoint = randomFile.getFilePointer();
while(startPoint《endPosition){
randomAccessFile.write(randomFile.readByte());
startPoint = randomFile.getFilePointer();
}
//关闭文件输入、输出
randomAccessFile.close();
randomFile.close();
tempFile.delete();
jsp文件下载选择路径:
//要下载的文件
File fileload = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad",filename);

更多文章:
随机数公式wps(求wps 随机函数公式,从+0.005到-0.015,不能出现0)
2026年8月9日 03:15
html表格的基本语法结构(在HTML表格中align表示什么)
2025年7月20日 14:15
java开发系统流程(公司里面开发一个java项目的流程是什么)
2025年12月4日 15:30
replace belt 兄弟打印机(兄弟打印机出现replace toner cartridge是什么意思)
2025年9月26日 17:30
爱迪尔门锁系统连接数据库失败(爱迪尔 a90安装建立连接远程数据失败是怎么回事)
2026年6月1日 23:45
正则表达式匹配换行符和空格(为什么这个正则表达式不能匹配空格和换行)
2026年4月22日 13:30
unionid获取openid(怎么获取微信的unionid)
2025年5月27日 19:00
emersonev1000变频器说明书(变频器艾默生ev1000的程序,说明书关于寄存器地址的描述有几点疑惑求助)
2025年12月23日 07:15
sql server的azure扩展(如何在Azure上创建一个mssql的数据库,然后使用本机的sql management链接)
2026年6月27日 21:45
pg和mysql的区别(MySQL、PG属于分布式数据库吗怎么区分数据库是否为分布式)
2025年9月23日 06:45












