用Javaweb写一个上传图片的功能,要求写明注释
时间: 2024-03-20 08:43:55 浏览: 70
好的,以下是用 Java Web 实现上传图片功能的代码,已按照要求加上注释:
```java
package com.example.upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
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;
/**
* Servlet implementation class UploadServlet
*/
@WebServlet("/upload")
@MultipartConfig // 标记该 Servlet 支持文件上传
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 获取上传的文件
Part filePart = request.getPart("file"); // 根据表单中的 name 属性获取文件部分
String fileName = filePart.getSubmittedFileName(); // 获取上传文件的文件名
// 生成新的文件名,避免重名
String newFileName = UUID.randomUUID() + "_" + fileName;
// 将上传的文件保存到服务器本地
String uploadDir = getServletContext().getRealPath("/uploads"); // 获取上传目录的绝对路径
File uploadDirFile = new File(uploadDir);
if (!uploadDirFile.exists()) { // 如果上传目录不存在,则创建
uploadDirFile.mkdirs();
}
String filePath = uploadDir + File.separator + newFileName;
filePart.write(filePath);
// 返回上传结果
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>文件上传成功!</h1>");
out.println("<p>原文件名:" + fileName + "</p>");
out.println("<p>新文件名:" + newFileName + "</p>");
out.println("<p>文件路径:" + filePath + "</p>");
out.println("</body></html>");
}
}
```
在上述代码中,我们使用了 `@MultipartConfig` 注解来标记该 Servlet 支持文件上传。在 `doPost()` 方法中,我们首先通过 `request.getPart("file")` 获取上传的文件部分,然后使用 `Part.write()` 方法将该文件保存到服务器本地。最后,我们返回一个简单的 HTML 页面,告诉用户文件上传成功并显示上传的文件名、新文件名和文件路径等信息。
需要注意的是,上述代码中只是一个简单的示例,实际应用中还需要进行一些安全性检查,例如检查上传的文件类型、大小等信息,以及防止文件名注入攻击等。
阅读全文