1.要实现上传功能要注意以下几点
①对于表单的限制
②对于servlet的限制
只要添加了enctype="multipart/form-data"这个属性.
在servlet里面的方法,即是 request.getParameter(),就使用不了了,因为该方法只会返回null
那么假如要获取请求的内容 只可以使用方法
③补充:
2.commons-fileupload
需要导入两个jar包
commons-fileupload的使用如下:
commons-fileupload 的原理是将请求体解析后,存入到FileItem的集合里面去.
然后分别操作FileItem的API来获取请求体的相关内容
3.上传文件需要注意的几点问题
①上传的文件最好放在WEB-INF文件夹里面,因为这样子可以避免别人直接访问你的文件.
②部分浏览器上传的文件可能是绝对路径,也有的浏览器是相对路径,这一点要进行处理
③要防止上传文件乱码问题,解决方法:
④要解决文件同名的问题:
⑤上传的文件目录打散问题:
这一点是要求同一个文件夹里边不可以存放过多文件
关于目录打散有多种方式:
这里介绍一种:
⑥上传的文件大小限制
主要有两种限制,分别是单个的文件大小限制,和 单个请求的大小限制
我们实现大小限制的代码如下:
注意:以上两句代码必须写在解析请求之前,即是在代码sfu.parseRequest(request);之前.否则不起作用.
⑦缓存大小和临时目录
缓存大小:当超出了该大小的时候,会将文件临时保存在临时目录之中
其中
DiskFileItemFactory dff=new DiskFileItemFactory ();这句代码已经默认了缓存大小和临时目录了.
另外,我们也可以在该构造方法里面传入两个参数,分别设置缓存大小和临时目录
【本文为e安在线合作讲师“刘建恒”原创稿件,转载请联系e安在线】