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 (第三方库,官网有教程) 在前端测试