Java文件上传实现
在现代Web开发中,文件上传是一个常见的需求,无论是用户上传头像、文档还是其他类型的文件,都需要通过某种方式将文件发送到服务器进行处理,Java提供了多种方式来实现文件上传,其中最常见的是使用Servlet和Apache Commons FileUpload库。
以下是一个简单的Java文件上传示例:
我们需要在HTML表单中添加一个文件输入字段:
<form action="upload" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
我们在Servlet中处理文件上传:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (!ServletFileUpload.isMultipartContent(request)) {
PrintWriter writer = response.getWriter();
writer.println("Error: Content is not multipart/form-data");
writer.flush();
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = new File(item.getName()).getName();
String filePath = getServletContext().getRealPath("/") + File.separator + "uploads" + File.separator + fileName;
File storeFile = new File(filePath);
item.write(storeFile);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个示例中,我们首先检查请求的内容是否为multipart/form-data,如果不是,我们返回一个错误消息,我们创建一个DiskFileItemFactory和一个ServletFileUpload对象,用于解析请求并处理文件上传,我们遍历所有的FileItem,对于非表单字段的项,我们将其写入到服务器的"uploads"目录中。
注意,这个示例没有处理任何错误情况,例如文件上传失败或者磁盘空间不足等,在实际开发中,你需要添加适当的错误处理代码。



还没有评论,来说两句吧...