Java文件上传实现

文件上传的 Java,属于那种你一开始觉得麻烦,其实摸透之后发现也就那么回事的功能。

HTML 表单加个enctype="multipart/form-data",配合 Servlet 或者 Apache 的Commons FileUpload,基本就能跑起来。你要是用的是Servlet 3.0+,那就更轻松了,@MultipartConfig一贴,解析文件省心不少。

Commons FileUpload还蛮好用,配合DiskFileItemFactory,可以控制上传文件的临时缓存路径和大小,性能也还不错。下面这段是解析上传求的典型写法:

ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
List items = upload.parseRequest(request);

接下来就遍历items,判断是表单字段还是文件,文件就直接写到服务器:

for (FileItem item : items) {
  if (item.isFormField()) {
    // 表单字段
  } else {
    String fileName = item.getName();
    String filePath = "your/desired/path/" + fileName;
    item.write(new File(filePath));
  }
}

要注意的一点是安全性。文件上传容易出事,比如病毒、木马啥的。你最好检查一下文件扩展名、MIME 类型,再做个大小限制。

如果你对上传组件不熟,推荐你看看 commons-fileupload-1.2.1,还有 基于 JSP 和 Servlet 的实现,都挺实用的。

哦对了,项目多了之后,文件存储位置、命名规则、元数据管理这些你也得想清楚。不然上传功能写完,维护起来会有点痛苦。

rar 文件大小:24.94MB