JavaWeb写上传图片的接口

JavaWeb写上传图片的接口

#代码

package tool;

import java.io.File;
import java.io.IOException;
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 // 启用对上传文件的支持
public class FileUploadServlet extends HttpServlet
{
    @Override
    protected void doPost(HttpServletRequest request , HttpServletResponse response)
            throws ServletException, IOException
    {
        // 设置请求编码为 UTF-8
        request.setCharacterEncoding("UTF-8");

        // 从请求中获取上传的文件部分,参数名为img
        Part filePart = request.getPart("img");

        // 获取上传文件的名称
        String fileName = getFileName(filePart);

        // 保存文件到指定路径,我这里是获取web工程目录,自己根据需要修改
        String rootPath = request.getServletContext().getRealPath("");
        String savePath = rootPath.split("out")[0] + "web\\static\\coverImg\\" + fileName;
        // 保存文件
        filePart.write(savePath);

        // 返回JSON响应
        response.setContentType("application/json; charset=utf-8");

        // 返回JSON字符串
        String jsonString;
        // 返回该图片可访问的地址
        String serverPath = String.format("http://localhost:8080/WebDemo_Web_exploded/static/coverImg/%s" , fileName);

        // 判断是否保存成功
        if(new File(savePath).exists()) {
            // 成功
            jsonString = String.format("{\"errno\": 0, \"data\": {\"url\": \"%s\", \"alt\": \"\", \"href\": \"\"}}" , serverPath);
        }
        else {
            // 失败
            jsonString = "{\"error\":1,\"message\":\"图片上传失败\"}";
        }

        // 返回JSON响应数据
        response.getWriter().println(jsonString);
    }

    // 解析获取文件名
    private String getFileName(Part part)
    {
        String contentDisposition = part.getHeader("content-disposition");

        System.out.println(contentDisposition);
        // 提取图片名字
        String[] parts = contentDisposition.split(";");
        for (String p : parts) {
            if (p.trim().startsWith("filename")) {
                return p.substring(p.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return "";
    }
}

#接口测试

1.使用 Apipost 进行接口测试

在这里插入图片描述

2.Apipost的响应结果

在这里插入图片描述

3.IDEA控制台输出结果,已得到图片

在这里插入图片描述

4.可以使用 wangEditor (第三方库,官网有教程) 在前端测试
在这里插入图片描述

前端也测试成功

在这里插入图片描述

ps: 小白写文章,不足之处请见谅!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值