Spring Boot 快速图片上传封装

import com.alibaba.fastjson.JSONObject;
import com.retailo2o.server.domain.base.ResponseData;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 文件上传处理
 * 
 */
@RestController
@RequestMapping("/webAPI")
public class CommonController 
{
    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
  

    /**
     * 1.文件保存在服务器,url地址保存在数据库
     * 上传成功之后返回成功保存的url地址
     */
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public ResponseData upload(@RequestParam("file") MultipartFile file) {
        try {
            JSONObject jsonObject = new JSONObject();
            if (file.isEmpty()) {
                System.out.println("上传的文件为空!");
                return ResponseData.error("上传的文件为空");
            }
            // 文件名
            String fileName = file.getOriginalFilename();
            // 获取文件后缀名
            String extension = fileName.substring(fileName.indexOf("."));
            // 上传文件的路径
            String uploadFolder =  glbalUploadPath//D:/home/uploadPath/
; // 生成一个新的文件名 fileName = UUID.randomUUID() + extension; File dest = new File(uploadFolder + fileName); // 检测文件目录是否存在 不存在则创建 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); } catch (IOException e) { e.printStackTrace(); } // 返回虚拟文件访问路径 jsonObject.put("fileName",fileName); jsonObject.put("url",globalpictureUrl+"/scm-server/upload/"+fileName); jsonObject.put("fileByte",file.getBytes()); return ResponseData.success(jsonObject); } catch (Exception ex) { System.out.println("文件为空"); return ResponseData.error("文件为空"); } } /** * 1.文件保存在服务器,url地址保存在数据库 * 上传成功之后返回成功保存的url地址 */ @PostMapping("/upload2") @ResponseBody public ResponseData uploadFile2(@RequestParam("file") MultipartFile file, HttpServletRequest request){ JSONObject jsonObject=new JSONObject(); if(!file.isEmpty()){ String uploadPath = "C:\\uploadFile"; // 如果目录不存在则创建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } String OriginalFilename = file.getOriginalFilename();//获取原文件名 String suffixName = OriginalFilename.substring(OriginalFilename.lastIndexOf("."));//获取文件后缀名 //重新随机生成名字 String filename = UUID.randomUUID().toString() +suffixName; File localFile = new File(uploadPath+"\\"+filename); try { file.transferTo(localFile); //把上传的文件保存至本地 /** * 这里应该把filename保存到数据库,供前端访问时使用 */ // return filename;//上传成功,返回保存的文件地址 jsonObject.put("fileName",filename); jsonObject.put("url",filename); System.out.println(filename); return ResponseData.success(jsonObject); }catch (IOException e){ e.printStackTrace(); System.out.println("上传失败"); return ResponseData.error("上传失败"); } }else{ System.out.println("文件为空"); return ResponseData.error("文件为空"); } } } 

  

posted @ 2022-10-05 17:17  LowKeyC  阅读(51)  评论(0编辑  收藏  举报
有志者事竟成破釜沉舟百二秦关终属楚苦心人,天不负,卧薪尝胆,三千越甲可吞吴