javaweb将上传的图片保存在项目文件webapp下的upload文件夹下

发布于:2025-03-02 ⋅ 阅读:(99) ⋅ 点赞:(0)
  1. 前端HTML表单 (upload.html)
    首先,创建一个HTML页面,允许用户选择并上传图片。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>图片上传</title>
</head>
<body>
    <h2>上传图片</h2>
    <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="myImage" accept="image/*" required>
        <br><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

注意:表单的method设置为"post",enctype需设置成"multipart/form-data"
2. 后端Servlet (UploadServlet.java)
接下来,创建一个Servlet来处理文件上传请求,并将上传的图片保存到webapp/load目录下。

package com.example.upload;

import java.io.File;
import java.io.IOException;
import java.util.List;

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(
    location = "${initParam.uploadPath}", // 上传文件的临时存储路径
    maxFileSize = 10 * 1024 * 1024,      // 最大文件大小 10MB
    maxRequestSize = 10 * 1024 * 1024,   // 最大请求大小 10MB
    fileSizeThreshold = 1 * 1024 * 1024  // 文件大小阈值 1MB
)
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取上传的文件部分
        Part filePart = request.getPart("myImage");
        if (filePart == null) {
            response.getWriter().println("没有选择文件!");
            return;
        }

        // 获取文件名
        String fileName = getFileName(filePart);
        if (fileName == null || fileName.isEmpty()) {
            response.getWriter().println("文件名为空!");
            return;
        }

        // 获取webapp/load目录的实际路径
        String savePath = getServletContext().getRealPath("/upload") + File.separator + fileName;

        // 确保load目录存在
        File loadDir = new File(getServletContext().getRealPath("/upload"));
        if (!loadDir.exists()) {
            loadDir.mkdirs();
        }

        // 保存文件
        try {
            filePart.write(savePath);
            response.getWriter().println("文件上传成功!保存路径:" + savePath);
        } catch (IOException e) {
            response.getWriter().println("文件上传失败:" + e.getMessage());
        }
    }

    // 获取上传文件的文件名
    private String getFileName(Part part) {
        for (String content : part.getHeader("content-disposition").split(";")) {
            if (content.trim().startsWith("filename")) {
                return content.substring(content.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return null;
    }
}

注意需添加@MultipartConfig注解


网站公告

今日签到

点亮在社区的每一天
去签到