zoukankan      html  css  js  c++  java
  • spring boot上传图片至七牛云服务器做存储

    1. pom.xml引入七牛云的sdk

    <dependency>
             <groupId>com.qiniu</groupId>
             <artifactId>qiniu-java-sdk</artifactId>
             <version>[7.2.0,7.2.99]</version>
    </dependency>

    2. 写一个图片上传的类QiniuUploadFileUtil

    package com.chenxq.blog.personalBlog.Util;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.util.StringUtils;
    
    import com.qiniu.common.QiniuException;
    import com.qiniu.common.Zone;
    import com.qiniu.http.Response;
    import com.qiniu.storage.Configuration;
    import com.qiniu.storage.UploadManager;
    import com.qiniu.util.Auth;
    
    
    public class QiniuUploadFileUtil {
    
        // 这个是上传文件时在本地的临时文件夹
        @Value("${baseUploadUrl}")
        private   String baseUploadUrl;
        // 设置需要操作的账号的AK和SK,可以在七牛云的个人中心查询到
        private static   String accessKey="=======";
    
        private static   String secretKey="====";
        
        // 要上传的空间名
        private static  String bucketname="====";
    
        // 密钥
        private static  Auth auth = Auth.create(accessKey, secretKey);
       
    
        //上传 file是上传的文件地址,key是上传的图片名称
        public static String upload(File file, String key) throws IOException{
            // 创建上传对象,Zone*代表地区
            System.out.print(bucketname);
            Configuration configuration = new Configuration(Zone.zone2());
            UploadManager uploadManager = new UploadManager(configuration);
            try {
                // 调用put方法上传
                String token = auth.uploadToken(bucketname);
                if(StringUtils.isEmpty(token)) {
                    System.out.println("未获取到token,请重试!");
                    return null;
                }
                Response res = uploadManager.put(file,key,token);
                // 打印返回的信息
                if (res.isOK()){
                    System.out.print(res.bodyString());
                    //这里的key返回的就是存储在七牛云上的地址
                    return key;
                }
            }catch (QiniuException e) {
                Response r = e.response;
                // 请求失败时打印的异常的信息
                e.printStackTrace();
                System.out.println("error "+r.toString());
                try {
                    // 响应的文本信息
                    System.out.println(r.bodyString());
                } catch (QiniuException e1) {
                    System.out.println("error "+e1.error());
                }
            }
            return null;
        }
        
    }

    3. 在controller里调用

        @ApiOperation("图片上传至七牛云")
        @ApiImplicitParam(name = "file", value = "文件", required = true, dataType = "File")
        @RequestMapping(value="/uploadqiniu",method= {RequestMethod.POST,RequestMethod.GET})
        @ResponseBody
        public Result uploadqiniu(@RequestParam("file")MultipartFile file,HttpServletRequest request) {
            //获得文件名字
            String fileName=file.getOriginalFilename();
            fileName= FileNameUtil.getFileName(fileName);
    
            File dest = new File(baseUploadUrl + fileName);
            
            try {
                //将MultipartFile类转换成File类
                file.transferTo(dest);
                String key=QiniuUploadFileUtil.upload(dest, fileName);
                return ResultUtil.success(key);
                
            }catch(Exception e) {
                e.printStackTrace();
            }
            // 返回
            return ResultUtil.error(202,"未知错误导致上传失败");
        }
        

    4. 使用:http://七牛云域名//返回的key值,就可以访问图片了。

  • 相关阅读:
    CentOS 6.4 利用 Awstats 7.2 分析 Nginx 日志
    CentOS 6.4 x64 postfix + dovecot + 虚拟用户认证
    配置日志logwarch 每天发送到邮箱
    CentOSx64 安装 Gearmand 和 Gearman php扩展
    Redis之基本介绍
    Synchronized锁的基本介绍
    Lock的基本介绍
    java之threadlocal的使用
    Java之事务的基本应用
    linux之cp和scp的使用
  • 原文地址:https://www.cnblogs.com/LULULI/p/13792851.html
Copyright © 2011-2022 走看看