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;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
@WebServlet("/FileUploadServlet")
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 获取文件部件
Part filePart = request.getPart("file");
// 获取上传文件的输入流
InputStream fileContent = filePart.getInputStream();
// 获取上传文件的文件名
String fileName = getSubmittedFileName(filePart);
// 指定上传文件的保存目录
String uploadDirectory = "path/to/upload/directory/";
// 将上传的文件保存到服务器
Path filePath = Path.of(uploadDirectory, fileName);
Files.copy(fileContent, filePath, StandardCopyOption.REPLACE_EXISTING);
response.getWriter().println("File " + fileName + " has been uploaded successfully.");
}
// 获取上传文件的文件名
private String getSubmittedFileName(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
String fileName = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
return fileName.substring(fileName.lastIndexOf('/') + 1)
.substring(fileName.lastIndexOf('\\') + 1);
}
}
return null;
}
}
在上述示例中:
1. doPost方法处理POST请求,其中包含文件上传。
2. 通过request.getPart("file")获取文件部件。
3. 获取上传文件的输入流,并获取上传文件的文件名。
4. 指定保存上传文件的目录,然后使用Files.copy方法将文件保存到服务器。
5. 最后,向客户端发送一个简单的响应,表示文件上传成功。
确保在实际应用中进行适当的错误处理、文件大小限制、安全性和文件类型验证等操作。此外,根据实际需求,可能需要使用第三方库或框架简化文件上传处理。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6884/Servlet