您的位置:首页 > 其它

form表单文件上传 servlet文件接收

2018-02-06 00:00 573 查看
摘要:1、http://blog.csdn.net/Steven_sf/article/details/70674419;2、https://www.cnblogs.com/xiaotaoqi/p/5856044.html

需要导入jar包

commons-fileupload-1.3.2.jar

commons-io-2.5.jar

Upload.Jsp代码



<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>$title$/title> </head> <body> <formmethod="post"action="/test/UploadServlet"enctype="multipart/form-data"> 选择一个文件: <inputtype="file"name="uploadFile"/> <br/><br/> <inputtype="submit"value="上传"/> </form> </body> </html>



servlet接收文件代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
importjava.io.File;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.List;

importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;


@WebServlet("/UploadServlet")
publicclassUploadServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;

//上传文件存储目录
privatestaticfinalStringUPLOAD_DIRECTORY="upload";

//上传配置
privatestaticfinalintMEMORY_THRESHOLD=1024*1024*3;//3MB
privatestaticfinalintMAX_FILE_SIZE=1024*1024*40;//40MB
privatestaticfinalintMAX_REQUEST_SIZE=1024*1024*50;//50MB

/**
*上传数据及保存文件
*/
protectedvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
//检测是否为多媒体上传
if(!ServletFileUpload.isMultipartContent(request)){
//如果不是则停止
PrintWriterwriter=response.getWriter();
writer.println("Error:表单必须包含enctype=multipart/form-data");
writer.flush();
return;
}

//配置上传参数
DiskFileItemFactoryfactory=newDiskFileItemFactory();
//设置内存临界值-超过后将产生临时文件并存储于临时目录中
factory.setSizeThreshold(MEMORY_THRESHOLD);
//设置临时存储目录
factory.setRepository(newFile(System.getProperty("java.io.tmpdir")));

ServletFileUploadupload=newServletFileUpload(factory);

//设置最大文件上传值
upload.setFileSizeMax(MAX_FILE_SIZE);

//设置最大请求值(包含文件和表单数据)
upload.setSizeMax(MAX_REQUEST_SIZE);

//构造临时路径来存储上传的文件
//这个路径相对当前应用的目录
StringuploadPath=getServletContext().getRealPath("./")+File.separator+UPLOAD_DIRECTORY;


//如果目录不存在则创建
FileuploadDir=newFile(uploadPath);
if(!uploadDir.exists()){
uploadDir.mkdir();
}

try{
//解析请求的内容提取文件数据
@SuppressWarnings("unchecked")
List<FileItem>formItems=upload.parseRequest(request);

if(formItems!=null&&formItems.size()>0){
//迭代表单数据
for(FileItemitem:formItems){
//处理不在表单中的字段
if(!item.isFormField()){
StringfileName=newFile(item.getName()).getName();
StringfilePath=uploadPath+File.separator+fileName;
FilestoreFile=newFile(filePath);
//在控制台输出文件的上传路径
System.out.println(filePath);
//保存文件到硬盘
item.write(storeFile);
request.setAttribute("message",
"文件上传成功!");
}
}
}
}catch(Exceptionex){
request.setAttribute("message",
"错误信息:"+ex.getMessage());
}
//跳转到message.jsp
getServletContext().getRequestDispatcher("/message.jsp").forward(
request,response);
}
}
Servlet3.0新特性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
importorg.apache.catalina.core.ApplicationPart;

importjavax.servlet.ServletException;
importjavax.servlet.annotation.MultipartConfig;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.Part;
importjava.io.IOException;
importjava.io.PrintWriter;

/**
*CreatedbyIMPon2016/9/9.
*/
@WebServlet("UploadServlet")
@MultipartConfig(location="D://")
publicclassUploadServletextendsHttpServlet{
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doGet(request,response);
}

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
Stringpath=this.getServletContext().getRealPath("/");
Partp=request.getPart("file1");
if(p.getContentType().contains("image")){
ApplicationPartap=(ApplicationPart)p;
Stringfname1=ap.getSubmittedFileName();
intpath_idx=fname1.lastIndexOf("\\")+1;
Stringfname2=fname1.substring(path_idx,fname1.length());
p.write(path+"/upload/"+fname2);
out.write("文件上传成功");
}else{
out.write("请选择图片文件");
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: