import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;
private static final String UPLOAD_DIRECTORY = "uploads"; // 指定上传目录
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取上传文件的part
Part filePart = request.getPart("file");
String fileName = extractFileName(filePart);
// 创建上传目录(如果不存在)
File uploadDir = new File(UPLOAD_DIRECTORY);
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
// 将文件写入指定目录
try (InputStream fileContent = filePart.getInputStream();
FileOutputStream outputStream = new FileOutputStream(new File(uploadDir, fileName))) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = fileContent.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
response.getWriter().println("File upload failed.");
return;
}
response.getWriter().println("File uploaded successfully.");
}
// 提取文件名
private String extractFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
String[] items = contentDisposition.split(";");
for (String item : items) {
if (item.trim().startsWith("filename")) {
return item.substring(item.indexOf("=") + 2, item.length() - 1);
}
}
return null;
}
}
javax.servlet.http.Part、java.io.*等。UPLOAD_DIRECTORY变量指定了文件上传的目标目录。你可以根据需要修改这个路径。@WebServlet注解将该类映射到/upload路径,并使用@MultipartConfig注解启用多部分请求支持。doPost方法中,通过request.getPart("file")获取上传的文件。InputStream读取并写入到指定的文件中。extractFileName方法从HTTP头中提取文件名。希望这段代码和解释对你有帮助!
上一篇:java 获取请求ip
下一篇:java 运算符
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站