All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.minsin.aliyun.oss.AliyunOssManageFunctions Maven / Gradle / Ivy

Go to download

mutils组件中提供阿里云对象储存(OSS)等操作,该组件不可单独引用至maven依赖。详情请查看AliyunOssUploadFunctions、AliyunOssDownloadFunctions、AliyunOssManageFunctions 官方文档:https://help.aliyun.com/document_detail/32008.html

There is a newer version: 0.4.0.RELEASE
Show newest version
package cn.minsin.aliyun.oss;

import cn.minsin.aliyun.oss.config.MutilsAliyunOssMultiProperties;
import cn.minsin.aliyun.oss.model.AliyunOssFileFilterModel;
import cn.minsin.core.exception.MutilsErrorException;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.DeleteObjectsRequest;
import com.aliyun.oss.model.ListObjectsRequest;
import com.aliyun.oss.model.ObjectListing;

import java.net.URL;
import java.util.Date;
import java.util.List;

/**
 * 阿里云OSS 文件管理
 * 官方文档  https://helpcdn.aliyun.com/document_detail/32015.html
 *
 * @author mintonzhang
 * @date 2019年1月29日
 * @since 0.2.9
 */
public class AliyunOssManageFunctions extends AliyunOssBaseFunctions {
    protected AliyunOssManageFunctions(MutilsAliyunOssMultiProperties config) {
        super(config);
    }

    /**
     * 初始化配置文件
     *
     * @param prefix 配置文件中的前缀
     * @throws MutilsErrorException
     */
    public static AliyunOssManageFunctions init(String prefix) throws MutilsErrorException {
        return new AliyunOssManageFunctions(loadConfig(prefix));
    }

    /**
     * 查询文件是否存在
     *
     * @param fileName 文件名 调用{@link AliyunOssUploadFunctions} 获取此fileName
     * @throws MutilsErrorException
     * @throws ClientException
     * @throws OSSException
     */
    public boolean isExists(String fileName) throws OSSException, ClientException {

        OSS initClient = initClient();
        try {
            return initClient.doesObjectExist(childConfig.getBucketName(), fileName);
        } finally {
            initClient.shutdown();
        }
    }

    /**
     * 删除单个文件
     *
     * @param fileName 文件名 调用{@link AliyunOssUploadFunctions} 获取此fileName
     * @throws MutilsErrorException
     * @throws ClientException
     * @throws OSSException
     */
    public void deleteSingle(String fileName) throws OSSException, ClientException {
        OSS initClient = initClient();
        try {
            initClient.deleteObject(childConfig.getBucketName(), fileName);
        } finally {
            initClient.shutdown();
        }
    }

    /**
     * 删除多个文件
     *
     * @param keys 文件名 调用{@link AliyunOssUploadFunctions} 获取此fileName
     * @throws MutilsErrorException
     * @throws ClientException
     * @throws OSSException
     */
    public void deleteMany(List keys) throws OSSException, ClientException {
        OSS initClient = initClient();
        try {
            initClient.deleteObjects(new DeleteObjectsRequest(childConfig.getBucketName()).withKeys(keys).withQuiet(true));
        } finally {
            initClient.shutdown();
        }
    }

    /**
     * 查询文件{@link ObjectListing} 以下为ObjectListing的详细解释
     * objectSummaries	限定返回的文件元信息。	List getObjectSummaries()
     * prefix	本次查询结果的前缀。	String getPrefix()
     * delimiter	对文件名称进行分组的一个字符。	String getDelimiter()
     * marker	标明本次列举文件的起点。	String getMarker()
     * maxKeys	列举文件的最大个数。	int getMaxKeys()
     * nextMarker	下一次列举文件的起点。	String getNextMarker()
     * isTruncated	指明列举文件是否被截断。
     * 列举完没有截断,返回值为false。
     * 没列举完就有截断,返回值为true。
     * boolean isTruncated()
     * commonPrefixes	以delimiter结尾,且有共同前缀的文件集合。	List getCommonPrefixes()
     * encodingType	指明返回结果中编码使用的类型。	String getEncodingType()
     * 

* 官方文档 https://helpcdn.aliyun.com/document_detail/84841.html * * @param model */ public ObjectListing list(AliyunOssFileFilterModel model) { OSS initClient = initClient(); try { ListObjectsRequest listObjectsRequest = model.toListObjectsRequest(); listObjectsRequest.setBucketName(childConfig.getBucketName()); return initClient.listObjects(listObjectsRequest); } finally { initClient.shutdown(); } } /** * 获取文件访问路径 * * @param fileName 文件名 调用{@link AliyunOssUploadFunctions} 获取此fileName * @param timeout 有效访问时间 单位(毫秒) 最低不能少于10分钟 * @param method 请求方式 默认get * @throws MutilsErrorException */ public String getUrl(String fileName, long timeout, HttpMethod method) { if (timeout < 600000) { timeout = 604800000; } if (method == null) { method = HttpMethod.GET; } OSS initClient = initClient(); try { // 设置URL过期时间 Date expiration = new Date(System.currentTimeMillis() + timeout); // 生成URL URL url = initClient.generatePresignedUrl(childConfig.getBucketName(), fileName, expiration, method); return url == null ? null : url.toString(); } finally { initClient.shutdown(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy