首页 > 其他分享 >Spring Boot 快速图片上传封装

Spring Boot 快速图片上传封装

时间:2022-10-05 17:38:29浏览次数:64  
标签:ResponseData 封装 Spring Boot fileName file jsonObject import 上传

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;
            // 生成一个新的文件名
            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("文件为空");
        }
    }

}

  

标签:ResponseData,封装,Spring,Boot,fileName,file,jsonObject,import,上传
From: https://www.cnblogs.com/LowKeyCXY/p/16755925.html

相关文章

  • Spring Cloud:第三章:Ribbon客服端负载均衡
    负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段。理解Ribbon对于我们使用SpringCloud来讲非常的重要。它是一个基于Http和TCP的客户端负载均衡工具。......
  • 记一次SpringBoot中跨域的小问题
    记一次SpringBoot中跨域的小问题问题前阵子,有个学长在跨域的时候遇到一个问题,我们两个人互相讨论了一番,得到了问题的答案。问题如下:如果按照上图的方式配置跨域类,那么......
  • SpringMVC笔记
    一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称......
  • AD altium designer修改 封装库后报错
    STG:docfile已被损坏。at3437EE11.ADVPCB.DLL,BaseAddress:33980000.这个错误是封装库摔坏导致,实际上可能是操作过快导致软件问题,可以将库复制出来,重启电脑单独打......
  • java框架——Spring(二)
    AOP简介AOP(AspectOrientedProgramming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(ObjectOrientedProgramming)面向对象编程作用:在不惊动原始设计的基......
  • Spring整合RabbitMQ
    ✨Spring整合RabbitMQ​​1.简单消息模式​​​​1.1生产者​​​​1.1.1创建生产者工程spring-rabbitmq-producer​​​​1.1.2引入依赖​​​​1.1.3属性配置文件​​......
  • Spring源码-循环依赖
    解决循环依赖的思路是将将创建bean分为实例化和初始化,实例化只是为类分配内存,类里面的属性全部都是默认值;初始化是为类的属性设置具体值。所以只能解决set方法注入的循环依......
  • JAVA的封装性--1
    classAnimal{Stringname;privateintlegs;//将属性私有化(private),然后提供公共的方法来获取(get),和设置(set)属性的值        以下标黄部分为封装性......
  • 2022最新SpringMVC面试题附完整答案
    SpringMVC面试题一、单选题1.下列关于SpringMVC说法正确的是BA.SpringMVC和Spring没有关系B.SpringMVC是一个控制层框架,复制接收和处理请求C.SpringMVC可以脱离Spring单独......
  • 2022最新Spring面试题附完整答案
    Spring面试题一、单选题1.Spring是年发布的(B)A.2022B.2004C.2006D.20082.Spring中的对象的作用域不包括(B)A.sessionB.servletContextC.singletonD.proptotype3.在Spring......