java实现上传图片以及显示图片功能项目

以下是Java实现上传图片以及显示图片的简单项目:

上传图片功能:

  1. 首先创建一个HTML表单,让用户可以选择要上传的图片:
<form action="upload" method="POST" enctype="multipart/form-data">
  <input type="file" name="imageFile">
  <input type="submit" value="上传">
</form>
  1. 在Java Servlet中处理上传的图片。首先需要导入相关的类库:
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
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;
  1. 在Servlet中编写处理上传图片的代码。首先需要将上传的图片保存到服务器的本地文件系统中:
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
  private static final String UPLOAD_DIR = "uploads";
  
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIR;
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
      uploadDir.mkdir();
    }
    
    Part filePart = request.getPart("imageFile");
    String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
    Path filePath = Paths.get(uploadPath, fileName);
    try (InputStream fileContent = filePart.getInputStream()) {
      Files.copy(fileContent, filePath, StandardCopyOption.REPLACE_EXISTING);
    }
  }
}

在上面的代码中,我们首先获取上传图片的路径,然后创建一个目录来存储上传的图片。接着,我们从请求中获取到上传的文件的Part对象,然后获取文件名,并将文件保存到本地文件系统中。

显示图片功能:

  1. 首先,我们需要在HTML页面中显示图片。为了做到这一点,我们可以编写如下的HTML代码:
<img src="display?filename=example.jpg" alt="Example Image">
  1. 接下来,在Java Servlet中编写处理显示图片的代码。需要将上传的图片从服务器的本地文件系统中读取出来,并将其输出到响应中:
@WebServlet("/display")
public class DisplayServlet extends HttpServlet {
  private static final String UPLOAD_DIR = "uploads";
  
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String fileName = request.getParameter("filename");
    String filePath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIR + File.separator + fileName;
    File file = new File(filePath);
    if (!file.exists()) {
      response.sendError(HttpServletResponse.SC_NOT_FOUND);
      return;
    }
    
    String mimeType = getServletContext().getMimeType(filePath);
    if (mimeType == null) {
      mimeType = "application/octet-stream";
    }
    
    response.setContentType(mimeType);
    response.setContentLength((int) file.length());
    try (InputStream in = new FileInputStream(file);
         OutputStream out = response.getOutputStream()) {
      byte[] buffer = new byte[1024];
      int bytesRead;
      while ((bytesRead = in.read(buffer)) != -1) {
        out.write(buffer, 0, bytesRead);
      }
    }
  }
}

在上面的代码中,我们首先从请求的参数中获取到要显示的图片的文件名,然后从本地文件系统中读取该文件。接着,我们设置响应的内容类型和内容长度,并将文件输出到响应中。 综上所述,这就是Java实现上传图片以及显示图片的简单项目。当然,实际项目中可能还需要做很多其他的事情,例如验证文件类型、大小以及处理并发上传等。