七牛云Java基本上传下载工具

maven依赖


        <!-- https://mvnrepository.com/artifact/com.qiniu/qiniu-java-sdk -->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.9.0</version>
        </dependency>

主类


import com.fasterxml.jackson.databind.ObjectMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class QiniuUtil {

    static ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 将图片上传到七牛云
     */
    public static String upload(InputStream file, String key) throws Exception {
        return upload(file,QiniuConfig.bucketName,QiniuConfig.domain,key);
    }
    public static String uploadMy(InputStream file,String key) throws Exception {
        return upload(file,QiniuConfig.bucketNamePrivate,QiniuConfig.domainPrivate,key);
    }
    public static String upload(InputStream file,String bucketName,String domain,String key) throws Exception {
        // zone0华东区域,zone1是华北区域,zone2是华南区域
        Configuration cfg = new Configuration(Region.region2());
        UploadManager uploadManager = new UploadManager(cfg);
        // 生成上传凭证,然后准备上传
        Auth auth = Auth.create(QiniuConfig.accessKey, QiniuConfig.secretKey);
        String upToken = null;
        upToken = auth.uploadToken(bucketName);
        Response response = uploadManager.put(file, key, upToken, null, null);
        // 解析上传成功的结果
        DefaultPutRet putRet = objectMapper.readValue(response.bodyString(), DefaultPutRet.class);
        return domain + putRet.key;
    }

    /**
     * 删除文件
     */
    public static void del(String key) throws IOException {
        deleteFile(QiniuConfig.bucketName,key);
    }
    public static void delMy(String key) throws IOException {
        deleteFile(QiniuConfig.bucketNamePrivate,key);
    }
    public static void deleteFile(String bucketName,String key) throws IOException {
        Auth auth = Auth.create(QiniuConfig.accessKey, QiniuConfig.secretKey);
        Configuration cfg = new Configuration(Region.region2());
        BucketManager bucketManager = new BucketManager(auth, cfg);
        bucketManager.delete(bucketName, key);
    }

    /**
     * 列举与指定前缀匹配的所有文件Key
     */
    public static List<String> listFilesWithPrefix(String prefix, int limit) throws QiniuException {
        return listFilesWithPrefix(QiniuConfig.bucketName,prefix,limit);
    }
    /**
     * 列举与指定前缀匹配的所有文件Key
     *
     * @param bucketName 存储桶名称
     * @param prefix     要匹配的前缀
     * @param limit      每次请求的最大返回数量(可选,根据需求设置)
     * @return 包含所有匹配文件Key的列表
     * @throws QiniuException 如果发生错误
     */
    public static List<String> listFilesWithPrefix(String bucketName, String prefix, int limit) throws QiniuException {
        Auth auth = Auth.create(QiniuConfig.accessKey, QiniuConfig.secretKey);
        Configuration cfg = new Configuration(Region.region2());
        BucketManager bucketManager = new BucketManager(auth, cfg);

        List<FileInfo> fileInfoList = new ArrayList<>();
        BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucketName, prefix, limit, null);

        while (fileListIterator.hasNext()) {
            FileInfo[] fileInfoArray = fileListIterator.next();
            fileInfoList.addAll(Arrays.asList(fileInfoArray));
        }
        List<String> keys = new ArrayList<>();
        for (FileInfo fileInfo : fileInfoList) {
            keys.add(fileInfo.key);
        }
        return keys;
    }

    /**
     * 生成私有空间图片的下载URL
     *
     * @param url 图片的链接 domain+key
     * @param expires 链接过期时间(秒),默认为3600秒
     * @return 私有图片的下载URL
     */
    public static String getPrivateUrl(String url, int expires) {
        Auth auth = Auth.create(QiniuConfig.accessKey, QiniuConfig.secretKey);
        long expireInSeconds = System.currentTimeMillis() / 1000 + expires;
        // 如果文件名包含特殊字符,可能需要进行编码
        //String finalKey = UrlSafeBase64.encodeToString(key.getBytes());
        return auth.privateDownloadUrl(url, expireInSeconds);
    }

    public static void main(String[] args) throws Exception{
        //初始化配置
        QiniuConfig qiniuConfig = new QiniuConfig();
        qiniuConfig.init();

        //上传
//        FileInputStream fileInputStream = new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\文档\\图片\\a.png"));
//        String res = upload(fileInputStream,"1.png");
//        System.out.println(res);

        //删除
        //del("FvRSLu-Nmd_tEkj1gxXUcfJ9IWLz");

        //查询hello开头的key
//        List<String> list = listFilesWithPrefix(QiniuConfig.bucketName, "hello",10);
//        for (String s : list) {
//            System.out.println(s);
//        }

        //私有 下载
        System.out.println(getPrivateUrl("http://myimg.xxx.top/1.png",60));

    }


}

配置文件


/**
 * 七牛云配置
 */
@Component
@Data
public class QiniuConfig {

    //对应七牛云文件夹 / 前缀
    public static String PREFIX_U_EDITOR = "codeying/ueditor/";

    public static String accessKey;
    public static String secretKey;
    public static String bucketName;//空间名
    public static String bucketNamePrivate;
    public static String domain;//域名
    public static String domainPrivate;

    @Value("${qiniu.accessKey}")
    private String accessKeyV = "test";
    @Value("${qiniu.secretKey}")
    private String secretKeyV = "test";
    @Value("${qiniu.bucketName}")
    private String bucketNameV = "public-img-del";
    @Value("${qiniu.bucketName-private}")
    private String bucketNamePrivateV = "codeying";
    @Value("${qiniu.domain}")
    private String domainV = "http://img.codeying.top/";
    @Value("${qiniu.domain}")
    private String domainPrivateV = "http://myimg.xxx.top/";

    @PostConstruct
    public void init() {
        accessKey = accessKeyV;
        secretKey = secretKeyV;
        bucketName = bucketNameV;
        bucketNamePrivate = bucketNamePrivateV;
        domain = domainV;
        domainPrivate = domainPrivateV;
    }



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学长敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值