java实现文件批量上传
时间: 2023-11-18 18:57:18 浏览: 33
你可以使用 Java 的 Apache Commons FileUpload 库来实现文件批量上传。以下是一个简单的示例:
1. 在 HTML 中添加上传文件表单:
```
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple>
<input type="submit" value="上传">
</form>
```
2. 在 Java 中处理上传请求:
```
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建文件上传工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置临时文件夹
String tmpPath = System.getProperty("java.io.tmpdir");
factory.setRepository(new File(tmpPath));
// 创建上传处理器
ServletFileUpload uploader = new ServletFileUpload(factory);
// 处理上传请求
try {
List<FileItem> items = uploader.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
// 保存上传文件
String fileName = item.getName();
File file = new File("/path/to/upload/" + fileName);
item.write(file);
}
}
response.getWriter().write("上传成功!");
} catch (Exception e) {
e.printStackTrace();
response.getWriter().write("上传失败:" + e.getMessage());
}
}
}
```
在这个例子中,我们使用 DiskFileItemFactory 来设置临时文件夹,然后使用 ServletFileUpload 处理上传请求。对于每个上传的文件项,我们使用 FileItem.getName() 获取文件名,并使用 FileItem.write() 将文件保存到指定的目录中。最后,我们通过 HttpServletResponse.getWriter() 将结果返回给客户端。