利用七牛云配置云储存

在使用FastDFS做文件上传之后,想起之前看人人开源的时候用七牛云配置过云储存,但是当时界面都是写好的,直接在界面上配就好,这次就想用java代码实现一次。

在这里插入图片描述

效果展示
在这里插入图片描述实现步骤

第一步:引入依赖

<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.2.6</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.3.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.6.2</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>happy-dns-java</artifactId>
    <version>0.1.4</version>
    <scope>compile</scope>
</dependency>

第二步:在application.yml中配置(当然,也可以直接在services里面写)

qiniu:
  accesskey: 你的accesskey
  secretkey: 你的secretkey
  bucket: 你的bucket

第三步:编写配置文件的实体类

@Data
@ConfigurationProperties(prefix = "qiniu")
public class SysOSSConfig {
    String accesskey;
    String secretkey;
    String bucket;
    String cdns;
}

第四步:编写Controller

@RestController
@RequestMapping("upload")
public class LyUploadController {

    @Autowired
    private LyUploadService lyUploadService;

    @Autowired
     private SysOSSUploadService sysOSSUploadService;

@PostMapping("image")
public ResponseEntity uploadImage(@RequestParam("file") MultipartFile file) throws IOException {

    byte[]  imgBytes = file.getBytes();
    //MultipartFile 转 字节数组
    String imgUrl = sysOSSUploadService.fileUpload(imgBytes);
    return ResponseEntity.ok(imgUrl) ;
}
}

在这里要注意,由于前端代码如下,在这里返回的是一个URL

 data() {
      return {
        baseUrl: config.api,
        valid:false,
        brand: {
          name: "",
          image: "",
          letter: "",
          categories: []
        },
        imageDialogVisible:false
      }

之前我创建一个map,来接收前端传过来的file,但是转成了字节数组再放进map,所以一直没办法传进去并且在服务器端报错。

 Map map = new HashMap<>();
 map.put("imgUrl",imgUrl);

第五步:编写Services层(核心层)

@Service
@EnableConfigurationProperties(SysOSSConfig.class)
public class SysOSSUploadService {
    public  String fileUpload(byte[] data){

        //图片的外链地址
        StringBuffer imgUrl  = new StringBuffer("你的图片外链地址");

        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone2());

        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传

        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;

        Auth auth = Auth.create("你的accesskey", "你的secretkey");
        String upToken = auth.uploadToken("你的bucket");

        try {
            //上传文件
            Response response = uploadManager.put(data,key,upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            imgUrl.append(putRet.key);
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
        return imgUrl.toString();
    }
}

在这里有几个地方需要注意
一.
* 华东 Zone.zone0()
* 华北 Zone.zone1()
* 华南 Zone.zone2()
* 北美 Zone.zoneNa0()
需要到你的七牛云控制台查看储存地区,并根据储存地区修改配置


二. StringBuffer imgUrl = new StringBuffer(" 图片的外链地址");
如果在这里不知道怎么配(因为在七牛云可能会配置加速域名),可以在你的七牛云上传一张图片,复制出外链地址,外链前半部分就是你在这里需要配的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值