相信大家都文件上传比不陌生,也有许多不同的处理方法。文件上传不仅要在前端页面进行格式校验,在后端服务也要进行各种可能性的校验。就拿图片来说吧,首先在前端要判断是否是图片格式,而服务还要判断文件是否存在,图片大小的限制,生成图片的缩略图等等。如果这些功能全部都有自己来写那该多累啊,效率也不高。
对于java文件上传也有许多的第三方包,其中commons-fileupload和commons-io的包很好用,也给我带来了很多方便。下面就以一小段代码来讲讲它的使用方法:
以上代码已经比较好的说明是文件上传的使用,在这里所使用的是commons-fileupload-1.2.1.jar和commons-io-1.4.jar。
对于java文件上传也有许多的第三方包,其中commons-fileupload和commons-io的包很好用,也给我带来了很多方便。下面就以一小段代码来讲讲它的使用方法:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if (!ServletFileUpload.isMultipartContent(req)) {
// TODO 该表单不符合文件上传规则,对前端页面返回错误信息。
//......
return;
}
//MyServlet是本方法类的servlet
//通过本类获取相对的URL,同时得到保存缓存的文件路径
//你也可以通过自己指定的路径,而不必非得这么做
URL url = MyServlet.class.getResource("");
File file = new File(url.getFile() + "tmp");
if (!file.isDirectory())
file.mkdir();
// 该提示符合文件上传规则,在此处对文件上传数据进行处理。
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设定使用内存超过512KB时,将产生临时文件并存储于临时目录中。
factory.setSizeThreshold(512 * 1024);
// 设定存储临时文件的目录。
factory.setRepository(file);
ServletFileUpload fileUpload = new ServletFileUpload(factory);
// 设定默认或最大允许上传5MB的文件。
fileUpload.setSizeMax(5 * 1024 * 1024);
try {
List<FileItem> fileItems = fileUpload.parseRequest(req);
for (FileItem fileItem : fileItems) {
if (!fileItem.isFormField()) {
byte[] bs = fileItem.get();
//TODO 这里已经获取到上传的文件字节,进行对数据的保存等等
//...
break;
}
}
} catch (Exception e) {
//TODO 返回错误信息给页面
}
}
以上代码已经比较好的说明是文件上传的使用,在这里所使用的是commons-fileupload-1.2.1.jar和commons-io-1.4.jar。
本文介绍了一种使用commons-fileupload和commons-io库简化Java文件上传的方法。通过实例代码演示了如何设置文件大小限制、处理文件上传及创建临时文件等操作。
159

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



