Servlet3.0的文件上传
来源:互联网 发布:杭州编程培训 编辑:程序博客网 时间:2024/06/05 18:01
Servlet 3.0对Servlet提供了注解配置功能 ,Servlet不用mapping到web.xml文件中就可以使用
Servlet3.0对应javaee 6 , 要使用tomcat 7.X及以上才能支持
Servlet3.0提供了对文件上传的原生支持。
使用注解@MultipartConfig将一个Servlet标识为支持文件上传。
Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。
上传文件的表单:
1
2
3
4
5
6
7
8
<
form
action
=
"UploadServlet"
method
=
"post"
enctype
=
"multipart/form-data"
>
<
tr
>
<
td
>
<
input
type
=
"file"
name
=
"uploadFile"
><
br
>
<
input
type
=
"submit"
>
</
td
>
</
tr
>
</
form
>
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
处理文件上传的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
package
com.cndatacom.servlet;
import
java.io.File;
import
java.io.IOException;
import
java.io.PrintWriter;
import
javax.servlet.ServletException;
import
javax.servlet.annotation.MultipartConfig;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.Part;
@WebServlet
(name=
"UploadServlet"
,urlPatterns=
"/UploadServlet"
)
@MultipartConfig
//标识Servlet支持文件上传 (我没写这个以后就出错了)
public
class
UploadServlet
extends
HttpServlet {
@Override
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
request.setCharacterEncoding(
"utf-8"
);
response.setCharacterEncoding(
"utf-8"
);
response.setContentType(
"text/html;charset=utf-8"
);
//存储路径 此时为(app根目录下的Files文件夹下)
String storePath = request.getServletContext().getRealPath(
"/Files"
);
Part part = request.getPart(
"uploadFile"
);
//Servlet3没有提供直接获取文件名的方法,需要从请求头中解析出来
//获取请求头
String header = part.getHeader(
"content-disposition"
);
//获取文件名
String fileName = parseFileName(header);
//把文件写到指定路径
part.write(storePath+File.separator+fileName);
PrintWriter out = response.getWriter();
out.println(
"上传成功"
);
out.flush();
out.close();
}
/**
* 根据请求头解析出文件名
* 请求头的格式:form-data; name="file"; filename="a.txt"
* @param header
* @return
*/
public
String parseFileName(String header) {
return
header.substring(header.lastIndexOf(
"="
) +
2
, header.length() -
1
);
}
}
@MultipartConfig的属性都是可选的:
fileSizeThreshold:设置阈值,达到阈值后开始把文件写到磁盘。
location: 设置文件的存储目录。
maxFileSize: 允许上传文件的最大值,Byte为单位。
maxRequestSize: multipart/form-data 请求允许的最大值。
- Servlet3.0的文件上传
- servlet3.0上传文件
- servlet3.0文件上传
- Servlet3.0文件上传
- servlet3.0 文件上传
- 基于Servlet3.0的文件上传
- 基于servlet3.0的文件上传
- 利用Servlet3.0的特性上传文件
- servlet3.0 实现文件的上传
- Servlet3.0现实文件上传
- servlet3.0多文件上传
- Servlet3.0 上传文件实例
- 【Demo】Servlet3.0 上传文件
- servlet3.0处理文件上传
- 使用Servlet3.0上传文件
- servlet3.0 part上传文件
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- vc ACCESS数据库插入数据
- Ubuntu10.04安装skyeye
- UVA live 2678 - Subsequence
- php开发的简易扫雷游戏
- word
- Servlet3.0的文件上传
- android 点击ListView 抓取选中项的隐藏值
- SDWebImage库的理解(2)
- 所谓PHP分页也就这么回事
- Head First设计模式笔记
- 一段实现井字形表格的CSS,兼容IE7、IE8、IE9、IE10、Firefox、Chrome
- 归并排序算法
- java 生产者与消费者
- xen-qemu初始化(1)