以下是Java实现上传图片以及显示图片的简单项目:
上传图片功能:
- 首先创建一个HTML表单,让用户可以选择要上传的图片:
<form action="upload" method="POST" enctype="multipart/form-data"> <input type="file" name="imageFile"> <input type="submit" value="上传"> </form>
- 在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;
- 在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对象,然后获取文件名,并将文件保存到本地文件系统中。
显示图片功能:
- 首先,我们需要在HTML页面中显示图片。为了做到这一点,我们可以编写如下的HTML代码:
<img src="display?filename=example.jpg" alt="Example Image">
- 接下来,在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实现上传图片以及显示图片的简单项目。当然,实际项目中可能还需要做很多其他的事情,例如验证文件类型、大小以及处理并发上传等。
评论