所需jar包:
commons-fileupload.jar
commons-io.jar
下载链接
form:
1.必须添加 enctype 属性,值为:multipart/form-data;
2.将作为上传框的 input 标签设置 type=”file”
servlet:(当表单添加了 enctype=”multipart/form-data” 属性,请求时的数据以字节的形式传输,所以对应的servlet中不能使用 request.getParameter(“param”) 得到表单项内容)
1.创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory(15 * 1024,
new File("f:/temp"));
第一个参数为缓存区大小,第二个参数为缓存目标文件(必须存在),也可以不添加参数。
2.使用工厂创建解析器
ServletFileUpload sfu = new ServletFileUpload(factory);
3.解析request对象,得到List< FileItem >
List<FileItem> fileItemList = sfu.parseRequest(request);
其中每一个 FileItem 封装着一个表单项内容
4.保存文件
//得到目录,是要保存到硬盘上的,所以要得到真实路径
String savepath = this.getServletContext().getRealPath("/book_img");
//得到名称,使用下标得到文件上传表单项
String filename = CommonUtils.uuid() + "_" + fileItemList.get(1).getName();
//使用目录和名称创建目标文件
File dest = new File(savepath, filename);
//保存文件到目标目录
fileItemList.get(1).write(dest);
该博客介绍了如何使用Servlet处理文件上传。首先,需要引入commons-fileupload和commons-io的jar包。在HTML表单中,需设置enctype属性为multipart/form-data,并添加file类型的input字段。在Servlet端,由于数据以字节形式传输,不能直接用request.getParameter获取内容。要创建FileUpload工厂,设定缓存大小和目标文件路径,然后通过工厂创建解析器解析request对象,获取FileItem列表,最后保存文件。
2203

被折叠的 条评论
为什么被折叠?



