Servlet 文件上传
来源:互联网 发布:jquery weui.min.js 编辑:程序博客网 时间:2024/06/06 08:58
一,实现文件上传和文件下载使用了第三组件
commons-fileupLoad-1.3.2-bin.zip点击打开链接
commons-io-2.5-bin.zip点击打开链接
将这两个压缩包解压,得到的commons-fileupLoad-1.3.2.jar 和 commons-io-2.5.jar 放到当前应用项目的WEB-INF\lib的目录下
二,文件上传
1.上传文件时最好使用Post方法提交表单。表单中添加 ENCTYPE="multipart/form-data"
例如:
<form method="post" action="FileUpLoad" ENCTYPE="multipart/form-data" >
2.实现文件上传的Servlet:步骤:
(1)创建一个DiskFileItemFactory工厂,设置好文件的保存目录和临时文件保存目录
(2)使用工厂得到ServletFileUpload解析器,解析器设置好监听器和文件名编码之后就可以进行文件解析了。
(3).文件解析首先判断是不是文件上传,如果不是,则直接返回;如果是,再次判断是普通输入项数据还是文件数据,是普通输入项数据则按普通方式进行解析;是文件数据则进行文件解析。(根据输入输出流进行上传)
注意:
(1)为保证上传文件的安全性,将上传文件放在WEB-INF的目录下
(2)限制上传文件的大小,同时设置工厂的缓冲区的大小,当上传的文件大小大于缓冲区的大小时,就会产生一个临时文件存放到指定的临时目录
//设置上传单个文件的大小的最大值,目前设置为1MB upload.setFileSizeMax(1024*1024);
DiskFileItemFactory factory = new DiskFileItemFactory(); //设置工厂的缓冲区的大小,当上传的文件大小大于缓冲区的大小时,就会产生一个临时文件存放到指定的临时目录,不指定大小,缓冲区大小默认10kb factory.setSizeThreshold(1024*100);
(3)对于相同文件上传多次出现相同文件名时,可以
//得到文件的保存名称 String saveFilename=makeFileName(filename);private String makeFileName(String filename) { //为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名 return UUID.randomUUID().toString() + "_" + filename;}(4)限制文件上传的类型,判断文件的后缀名是否合法。
(5)当两个上传框中只有一个选择了上传文件而直接点击了提交:
if(filename == null || filename.trim().equals("")){ continue;//如果某个框中没有选择上传的文件则跳出本次循环,继续下一次循环}
(6)监听文件上传进度
upload.setProgressListener
0 0
- Flex + servlet 上传文件
- JSP+servlet上传文件
- servlet文件上传
- Servlet文件上传
- Servlet上传文件
- 文件上传servlet应用
- jsp servlet文件上传
- 文件上传Servlet实例
- Servlet文件上传代码
- java servlet 文件上传
- servlet中的文件上传
- 文件上传Servlet例子
- Servlet实现文件上传
- Servlet 上传文件(转)
- Servlet实现文件上传
- servlet之上传文件
- servlet 文件上传
- servlet 上传excel文件
- 备考(京东2016实习生真题)
- 【ZOJ 3961 Let's Chat】
- rabbitmq——用户管理
- 第二周---最小生成树(Kruskal,Prim)、拓扑排序
- IntelliJ IDEA 2016.1.1(64) 长时间激活教程(到2099年)
- Servlet 文件上传
- 机器学习-实战-入门-javaml-KNN处理iris
- framework 编译
- 寄存器
- 【译】Vue框架引入JS库的正确姿势
- error: warning: Stopped in a context claiming to capture an Objective-C object pointer,
- Earth GMT Materials
- (ssl1597)P1880 石子合并问题
- YDT-Routesim学习(四)