Spring Boot 七牛云存储

maven 引入七牛云SDK

 java 代码

import com.alibaba.fastjson.JSON;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;
import com.qiniu.util.IOUtils;
import com.qiniu.util.StringMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;



@Service
public class QiniuServiceImpl {
    @Value(value = "${qiniu.ak}")
    private String ak;
    @Value(value = "${qiniu.sk}")
    private String sk;
    @Value(value = "${qiniu.bucket}")
    private String bucket;
    @Value(value = "${qiniu.yuming}")
    private String yuming;

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 测试代码
     * @param filePath
     */
    public void testUpload(String filePath) {
        Configuration cfg = new Configuration(Region.xinjiapo());
        UploadManager uploadManager = new UploadManager(cfg);
        FileInputStream fileInputStream = null;
        try {
            File file = new File(filePath);
            String key = file.getName();
            fileInputStream = new FileInputStream(file);
            byte[] bytes = IOUtils.toByteArray(fileInputStream);
            Auth auth = Auth.create(ak, sk);
            String upToken = auth.uploadToken(bucket, key, 3600, new StringMap().put("insertOnly", 0));
            try {
                Response response = uploadManager.put(bytes, key, upToken);
                DefaultPutRet putRet = JSON.parseObject(response.bodyString(),
                        DefaultPutRet.class);
                logger.info("上传成功{}", JSON.toJSONString(putRet));
            } catch (QiniuException ex) {
                Response r = ex.response;
                logger.error("上传文件失败,返回结果{}", r.toString());
                logger.error("失败body {}", r.bodyString());
            }
        } catch (IOException ex) {
            logger.error("上传文件失败 IO 异常 {}", ex);
        }finally {
            try {
                if(fileInputStream != null){
                    fileInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }



    /**
     * 上传
     * @param uploadFile
     * @return
     */
    public String saveFile(MultipartFile uploadFile) {
        Configuration cfg = new Configuration(Region.xinjiapo());
        UploadManager uploadManager = new UploadManager(cfg);
        String fileName = uploadFile.getOriginalFilename();
        Auth auth = Auth.create(ak, sk);
        String upToken = auth.uploadToken(bucket,
                fileName, 3600, new StringMap().put("insertOnly", 0));
        try {
            Response response = uploadManager.put(uploadFile.getBytes(), fileName, upToken);
            DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
            return yuming + putRet.key;
        } catch (QiniuException e) {
            logger.error("上传文件失败 {}", JSON.toJSONString(e.response));
        } catch (IOException e) {
            logger.error("上传文件失败 {}", e);
        }
        return null;
    }

    /**
     * 批量上传
     * @param uploadFiles
     * @return
     */
    public List<String> saveFile(MultipartFile[] uploadFiles) {
        List<String> list = new ArrayList<>();
        for (MultipartFile uploadFile : uploadFiles) {
            list.add(saveFile(uploadFile));
        }
        return list;
    }


    /**
     * 删除文件
     * @param fileName
     */
    public void deleteFile(String fileName){
        Configuration cfg = new Configuration(Region.xinjiapo());
        Auth auth = Auth.create(ak, sk);
        BucketManager bucketManager = new BucketManager(auth,cfg);
        try {
            bucketManager.delete(bucket, fileName);
            logger.info("已删除:{}",fileName);
        } catch (QiniuException ex) {
            //如果遇到异常,说明删除失败
            logger.error("删除失败",ex.code());
            logger.error(ex.response.toString());
        }
    }

    /**
     * 查询空间文件集合
     */
    public void queryFiles(){
        Configuration cfg = new Configuration(Region.xinjiapo());
        Auth auth = Auth.create(ak, sk);
        BucketManager bucketManager = new BucketManager(auth,cfg);
        BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, "");
        while (fileListIterator.hasNext()) {
            //处理获取的file list结果
            FileInfo[] items = fileListIterator.next();
            if(items.length == 0){
                logger.info("空间中没有文件");
                return ;
            }
            for (FileInfo item : items) {
                logger.info("已存文件 :{}",item.key);

                //删除文件
                //deleteFile(item.key);
            }
        }
    }

}

yml文件配置 

结果 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值