ToB企服应用市场:ToB评测及商务社交产业平台

标题: SpringBoot实现上传存储图片到七牛云服务器 [打印本页]

作者: 怀念夏天    时间: 2022-8-22 04:10
标题: SpringBoot实现上传存储图片到七牛云服务器
springboot项目上传存储图片到七牛云服务器

问题描述:
当图片存在本地时会出现卡顿的现象。比如一篇图文混排的文章,如果图片没有加载完,可能整个文章都显示不出来,因为它们都是用的同一个服务器。
但是如果把图片单独拿出来放在云服务器上进行加载,这样图片的加载和文字的加载互不干扰,就可以优化这个问题。
​                这是官网:https://www.qiniu.com/
一、controller
  1. @RestController
  2. @RequestMapping("upload")
  3. public class UploadController {
  4.    @Autowired
  5.    private QiniuUtils qiniuUtils;
  6.    @PostMapping
  7.    public Result upload(@RequestParam("image") MultipartFile file){
  8.       String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
  9.       boolean upload = qiniuUtils.upload(file, fileName);
  10.       if (upload){
  11.          return Result.success(QiniuUtils.url + fileName);
  12.       }
  13.       return Result.fail(7777,"上传失败");
  14.    }
  15. }
复制代码
二、utils
  1. @Component
  2. public class QiniuUtils {
  3.    public static  final String url = "【放你自己的网址】";
  4.        
  5.    @Value("${qiniu.accessKey}")
  6.    private  String accessKey;
  7.    @Value("${qiniu.accessSecretKey}")
  8.    private  String accessSecretKey;
  9.    public  boolean upload(MultipartFile file, String fileName){
  10.       //构造一个带指定 Region 对象的配置类
  11.       Configuration cfg = new Configuration(Region.huabei());
  12.       //...其他参数参考类注释
  13.       UploadManager uploadManager = new UploadManager(cfg);
  14.       //...生成上传凭证,然后准备上传
  15.       String bucket = "【放你自己的存储空间名】";
  16.       //默认不指定key的情况下,以文件内容的hash值作为文件名
  17.       try {
  18.          byte[] uploadBytes = file.getBytes();
  19.          Auth auth = Auth.create(accessKey, accessSecretKey);
  20.          String upToken = auth.uploadToken(bucket);
  21.          Response response = uploadManager.put(uploadBytes, fileName, upToken);
  22.          //解析上传成功的结果
  23.          DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
  24.          return true;
  25.       } catch (Exception ex) {
  26.          ex.printStackTrace();
  27.       }
  28.       return false;
  29.    }
  30. }
复制代码
三、properties
  1. qiniu.accessKey=[填你的密码]
  2. qiniu.accessSecretKey=[填你的秘钥]
  3. # 上面两个的值在七牛云服务器的空间管理那里找得到
  4. ## 上传文件总的最大值
  5. spring.servlet.multipart.max-request-size=70MB
  6. ## 单个文件的最大值
  7. spring.servlet.multipart.max-file-size=17MB
复制代码
秘钥可以在如下图的位置获取:


三、实现流程

简单说一下实现的过程是怎样的:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4