使用java写一个文件上传的demo
时间: 2024-04-11 09:27:43 浏览: 159
以下是一个使用Java编写的文件上传的示例代码:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取上传文件的表单字段
Part filePart = request.getPart("file");
// 获取上传文件的名称
String fileName = getSubmittedFileName(filePart);
// 获取服务器上保存文件的目录
String uploadDir = getServletContext().getRealPath("/uploads");
// 创建上传文件的保存路径
File savePath = new File(uploadDir);
if (!savePath.exists()) {
savePath.mkdirs();
}
// 将上传文件保存到服务器
File uploadedFile = new File(savePath, fileName);
try (InputStream fileContent = filePart.getInputStream()) {
Files.copy(fileContent, uploadedFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
response.getWriter().println("文件上传成功!");
}
private String getSubmittedFileName(Part part) {
String header = part.getHeader("content-disposition");
for (String content : header.split(";")) {
if (content.trim().startsWith("filename")) {
return content.substring(content.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
}
```
这个示例使用了Servlet的`@MultipartConfig`注解来支持文件上传,通过`request.getPart("file")`获取上传文件的表单字段,然后使用`Files.copy()`将文件保存到服务器指定的目录中。
请注意,这只是一个简单的文件上传示例,你可能需要根据自己的具体需求进行修改和扩展。
阅读全文