com.aliyun.oss.OSSClient

Here are the examples of the java api com.aliyun.oss.OSSClient taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

135 Examples 7

19 Source : AliyunCloudStorageService.java
with GNU Affero General Public License v3.0
from zhouhuan751312

/**
 * 阿里云存储
 */
public clreplaced AliyunCloudStorageService extends CloudStorageService {

    private OSSClient client;

    public AliyunCloudStorageService(CloudStorageConfig config) {
        this.config = config;
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new RxcException("上传文件失败,请检查配置信息", e);
        }
        return config.getAliyunDomain() + "/" + path;
    }

    @Override
    public String uploadSuffix(byte[] data, String suffix) {
        return upload(data, getPath(config.getAliyunurlPrefix(), suffix));
    }

    @Override
    public String uploadSuffix(InputStream inputStream, String suffix) {
        return upload(inputStream, getPath(config.getAliyunurlPrefix(), suffix));
    }
}

19 Source : AliyunCloudStorageService.java
with Apache License 2.0
from zhaowb82

/**
 * 阿里云存储
 *
 * @author Mark [email protected]
 */
public clreplaced AliyunCloudStorageService extends CloudStorageService {

    private OSSClient client;

    public AliyunCloudStorageService(CloudStorageConfig config) {
        this.config = config;
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new RRException("上传文件失败,请检查配置信息", e);
        }
        return config.getAliyunDomain() + "/" + path;
    }

    @Override
    public String uploadSuffix(byte[] data, String suffix) {
        return upload(data, getPath(config.getAliyunPrefix(), suffix));
    }

    @Override
    public String uploadSuffix(InputStream inputStream, String suffix) {
        return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
    }
}

19 Source : AliyunCloudStorageService.java
with GNU General Public License v3.0
from zhaoqicheng

/**
 * 阿里云存储
 * @author chenshun
 * @email [email protected]
 * @date 2017-03-26 16:22
 */
public clreplaced AliyunCloudStorageService extends CloudStorageService {

    private OSSClient client;

    public AliyunCloudStorageService(CloudStorageConfig config) {
        this.config = config;
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new RRException("上传文件失败,请检查配置信息", e);
        }
        return config.getAliyunDomain() + "/" + path;
    }

    @Override
    public String upload(byte[] data) {
        return upload(data, getPath(config.getAliyunPrefix()));
    }

    @Override
    public String upload(InputStream inputStream) {
        return upload(inputStream, getPath(config.getAliyunPrefix()));
    }
}

19 Source : OssApi.java
with GNU General Public License v3.0
from zhangyd-c

/**
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @version 1.0
 * @website https://docs.zhyd.me
 * @date 2019/2/12 15:49
 * @since 1.8
 */
public clreplaced OssApi {

    private OSSClient client;

    public OssApi(OSSClient client) {
        this.client = client;
    }

    public OssApi(String endpoint, String accessKeyId, String accessKeySecret) {
        this.client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }

    /**
     * 授权访问文件的URL
     *
     * @param fileName       待授权的文件名
     * @param bucketName     存储空间
     * @param expirationTime 授权失效时间,单位秒
     */
    public String authFile(String fileName, String bucketName, long expirationTime) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法授权访问文件的URL!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 文件授权失败!文件不存在:" + bucketName + "/" + fileName);
            }
            // 设置URL过期时间为1小时
            Date expiration = new Date(new Date().getTime() + expirationTime * 1000);
            // 生成URL
            return this.client.generatePresignedUrl(bucketName, fileName, expiration).toString();
        } finally {
            this.shutdown();
        }
    }

    /**
     * 判断文件是否存在
     *
     * @param fileName   OSS中保存的文件名
     * @param bucketName 存储空间
     */
    public boolean isExistFile(String fileName, String bucketName) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] Bucket不存在:" + bucketName);
            }
            return this.client.doesObjectExist(bucketName, fileName);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 获取指定bucket下的文件的访问权限
     *
     * @param fileName   OSS中保存的文件名
     * @param bucketName 存储空间
     * @return
     */
    public ObjectPermission getFileAcl(String fileName, String bucketName) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法获取文件的访问权限!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 无法获取文件的访问权限!文件不存在:" + bucketName + "/" + fileName);
            }
            return this.client.getObjectAcl(bucketName, fileName).getPermission();
        } finally {
            this.shutdown();
        }
    }

    /**
     * 获取文件列表
     *
     * @param bucketName 存储空间名
     * @param request    查询条件
     * @return 文件列表
     */
    public List<OSSObjectSummary> listFile(String bucketName, ObjectsRequestEnreplacedy request) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法获取文件列表!Bucket不存在:" + bucketName);
            }
            ListObjectsRequest listRequest = new ListObjectsRequest(bucketName);
            if (null != request) {
                listRequest.withDelimiter(request.getDelimiter()).withEncodingType(request.getEncodingType()).withMarker(request.getMarker()).withMaxKeys(request.getMaxKeys()).withPrefix(request.getPrefix());
            }
            // 列举Object
            ObjectListing objectListing = this.client.listObjects(listRequest);
            return objectListing.getObjectSummaries();
        } finally {
            this.shutdown();
        }
    }

    /**
     * 修改指定bucket下的文件的访问权限
     *
     * @param fileName   OSS中保存的文件名
     * @param bucketName 保存文件的目标bucket
     * @param acl        权限
     */
    public void setFileAcl(String fileName, String bucketName, CannedAccessControlList acl) {
        try {
            boolean exists = this.client.doesBucketExist(bucketName);
            if (!exists) {
                throw new OssApiException("[阿里云OSS] 无法修改文件的访问权限!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 无法修改文件的访问权限!文件不存在:" + bucketName + "/" + fileName);
            }
            this.client.setObjectAcl(bucketName, fileName, acl);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 删除文件
     *
     * @param bucketName 保存文件的目标bucket
     * @param fileName   OSS中保存的文件名
     */
    public void deleteFile(String fileName, String bucketName) {
        try {
            boolean exists = this.client.doesBucketExist(bucketName);
            if (!exists) {
                throw new OssApiException("[阿里云OSS] 文件删除失败!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 文件删除失败!文件不存在:" + bucketName + "/" + fileName);
            }
            this.client.deleteObject(bucketName, fileName);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 创建存储空间
     *
     * @param bucketName 存储空间名称
     */
    public void createBucket(String bucketName) {
        try {
            boolean exists = this.client.doesBucketExist(bucketName);
            if (exists) {
                throw new OssApiException("[阿里云OSS] Bucket创建失败!Bucket名称[" + bucketName + "]已被使用!");
            }
            // -- 创建指定类型的Bucket,请使用Java SDK 2.6.0及以上版本。
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
            // 设置bucket权限为公共读,默认是私有读写
            createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            // 设置bucket存储类型为低频访问类型,默认是标准类型
            createBucketRequest.setStorageClreplaced(StorageClreplaced.IA);
            this.client.createBucket(createBucketRequest);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 设置bucket的访问权限
     *
     * @param bucket bucket
     */
    public void setBucketAcl(BucketEnreplacedy bucket) {
        try {
            if (!this.client.doesBucketExist(bucket.getBucketName())) {
                throw new OssApiException("[阿里云OSS] 无法修改Bucket的访问权限!Bucket不存在:" + bucket.getBucketName());
            }
            this.client.setBucketAcl(bucket.getBucketName(), bucket.getAcl());
        } finally {
            this.shutdown();
        }
    }

    /**
     * 跨域访问管理:跨域资源共享(CORS)允许web端的应用程序访问不属于本域的资源
     *
     * @param corsRole 跨域规则
     */
    public void setBucketCors(CorsRoleEnreplacedy corsRole) {
        try {
            if (!this.client.doesBucketExist(corsRole.getBucketName())) {
                throw new OssApiException("[阿里云OSS] 无法修改Bucket的跨域设置!Bucket不存在:" + corsRole.getBucketName());
            }
            SetBucketCORSRequest request = new SetBucketCORSRequest(corsRole.getBucketName());
            // CORS规则的容器,每个bucket最多允许10条规则
            ArrayList<SetBucketCORSRequest.CORSRule> putCorsRules = new ArrayList<>();
            SetBucketCORSRequest.CORSRule corRule = new SetBucketCORSRequest.CORSRule();
            corRule.setAllowedMethods(corsRole.getAllowedMethod());
            corRule.setAllowedOrigins(corsRole.getAllowedOrigin());
            corRule.setAllowedHeaders(corsRole.getAllowedHeader());
            corRule.setExposeHeaders(corsRole.getExposedHeader());
            // 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。
            corRule.setMaxAgeSeconds(corsRole.getMaxAgeSeconds());
            // 最多允许10条规则
            putCorsRules.add(corRule);
            request.setCorsRules(putCorsRules);
            this.client.setBucketCORS(request);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 创建模拟文件夹本质上来说是创建了一个名字以“/”结尾的文件;<br>
     * 对于这个文件照样可以上传下载,只是控制台会对以“/”结尾的文件以文件夹的方式展示;<br>
     * 多级目录创建最后一级即可,比如dir1/dir2/dir3/,创建dir1/dir2/dir3/即可,dir1/、dir1/dir2/不需要创建;
     *
     * @param folder     目录名
     * @param bucketName 存储空间
     */
    public void createFolder(String folder, String bucketName) throws OssApiException {
        try {
            if (null == bucketName) {
                throw new OssApiException("[阿里云OSS] 尚未指定Bucket!");
            }
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法创建目录!Bucket不存在:" + bucketName);
            }
            folder = folder.endsWith("/") ? folder : folder + "/";
            this.client.putObject(bucketName, folder, new ByteArrayInputStream(new byte[0]));
        } finally {
            this.shutdown();
        }
    }

    /**
     * 批量设置Referer白名单
     *
     * @param refererEnreplacedy refererEnreplacedy
     */
    public void addReferers(RefererEnreplacedy refererEnreplacedy) {
        try {
            if (!this.client.doesBucketExist(refererEnreplacedy.getBucketName())) {
                throw new OssApiException("[阿里云OSS] 无法设置Referer白名单!Bucket不存在:" + refererEnreplacedy.getBucketName());
            }
            if (CollectionUtils.isEmpty(refererEnreplacedy.getRefererList())) {
                return;
            }
            BucketReferer br = new BucketReferer(true, refererEnreplacedy.getRefererList());
            this.client.setBucketReferer(refererEnreplacedy.getBucketName(), br);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 清空Referer白名单
     *
     * @param bucketName 存储空间名
     */
    public void removeReferers(String bucketName) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法清空Referer白名单!Bucket不存在:" + bucketName);
            }
            // 默认允许referer字段为空,且referer白名单为空。
            BucketReferer br = new BucketReferer();
            client.setBucketReferer(bucketName, br);
        } finally {
            this.shutdown();
        }
    }

    /**
     * 获取Referer白名单
     *
     * @param bucketName 存储空间名
     */
    public List<String> getReferers(String bucketName) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法获取Referer白名单!Bucket不存在:" + bucketName);
            }
            BucketReferer br = this.client.getBucketReferer(bucketName);
            return br.getRefererList();
        } finally {
            this.shutdown();
        }
    }

    /**
     * @param localFile 待上传的文件
     * @param fileName  文件名:最终保存到云端的文件名
     * @param bucket    需要上传到的目标bucket
     */
    public String uploadFile(File localFile, String fileName, String bucket) {
        try {
            InputStream inputStream = new FileInputStream(localFile);
            return this.uploadFile(inputStream, fileName, bucket);
        } catch (Exception e) {
            throw new OssApiException("[阿里云OSS] 文件上传失败!" + localFile, e);
        } finally {
            this.shutdown();
        }
    }

    /**
     * @param inputStream 待上传的文件流
     * @param fileName    文件名:最终保存到云端的文件名
     * @param bucketName  需要上传到的目标bucket
     */
    public String uploadFile(InputStream inputStream, String fileName, String bucketName) {
        try {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法上传文件!Bucket不存在:" + bucketName);
            }
            PutObjectResult result = this.client.putObject(bucketName, fileName, inputStream);
            return result.getETag();
        } finally {
            this.shutdown();
        }
    }

    private void shutdown() {
        this.client.shutdown();
    }
}

19 Source : OSSBootUtil.java
with Apache License 2.0
from zhangdaiscott

/**
 * @Description: 阿里云 oss 上传工具类(高依赖版)
 * @Date: 2019/5/10
 */
public clreplaced OSSBootUtil {

    private static String endPoint;

    private static String accessKeyId;

    private static String accessKeySecret;

    private static String bucketName;

    private static String imgDomain;

    public static void setEndPoint(String endPoint) {
        OSSBootUtil.endPoint = endPoint;
    }

    public static void setAccessKeyId(String accessKeyId) {
        OSSBootUtil.accessKeyId = accessKeyId;
    }

    public static void setAccessKeySecret(String accessKeySecret) {
        OSSBootUtil.accessKeySecret = accessKeySecret;
    }

    public static void setBucketName(String bucketName) {
        OSSBootUtil.bucketName = bucketName;
    }

    public static void setImgDomain(String imgDomain) {
        OSSBootUtil.imgDomain = imgDomain;
    }

    /**
     * oss 工具客户端
     */
    private static OSSClient ossClient = null;

    private static String FILE_URL;

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(MultipartFile file, String fileDir) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(imgDomain)) {
                FILE_URL = imgDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.getInputStream());
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                System.out.println("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(FileItemStream file, String fileDir) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(imgDomain)) {
                FILE_URL = imgDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                System.out.println("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 初始化 oss 客户端
     *
     * @return
     */
    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), new ClientConfiguration());
        }
        return ossClient;
    }
}

19 Source : AliyunCloudStorageService.java
with Apache License 2.0
from yjjdick

/**
 * 阿里云存储
 * @author chenshun
 * @email [email protected]
 * @date 2017-03-26 16:22
 */
public clreplaced AliyunCloudStorageService extends CloudStorageService {

    private OSSClient client;

    public AliyunCloudStorageService(CloudStorageConfig config) {
        this.config = config;
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new RRException("上传文件失败,请检查配置信息", e);
        }
        return config.getAliyunDomain() + "/" + path;
    }

    @Override
    public String uploadSuffix(byte[] data, String suffix) {
        return upload(data, getPath(config.getAliyunPrefix(), suffix));
    }

    @Override
    public String uploadSuffix(InputStream inputStream, String suffix) {
        return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
    }
}

19 Source : AliOssTools.java
with MIT License
from xiaodaojava

/**
 * @Author lixiang
 * @CreateTime 2019/9/11
 */
public clreplaced AliOssTools {

    private OSSClient ossClient;

    private OSSConfig ossConfig;

    public AliOssTools init() {
        DefaultCredentialProvider provider = new DefaultCredentialProvider(ossConfig.getAccessKey(), ossConfig.getAccessSecret());
        OSSClient client = new OSSClient(ossConfig.getEndpoint(), provider, null);
        this.ossClient = client;
        return this;
    }

    public AliOssTools setOssConfig(OSSConfig ossConfig) {
        this.ossConfig = ossConfig;
        return this;
    }

    public AliOssTools setOssClient(OSSClient ossClient) {
        this.ossClient = ossClient;
        return this;
    }

    /**
     * 保存文件到文件服务器
     *
     * @param fileName
     * @return
     * @throws Exception
     */
    public void saveFileToYun(String fileName, InputStream inputStream) {
        this.ossClient.putObject(ossConfig.getBucket(), fileName, inputStream);
    }

    public void saveByteToYun(String fileName, byte[] bytes) {
        InputStream inputStream = new ByteArrayInputStream(bytes);
        this.ossClient.putObject(ossConfig.getBucket(), fileName, inputStream);
    }

    public InputStream getStreamFromYun(String fileName) {
        OSSObject object = this.ossClient.getObject(ossConfig.getBucket(), fileName);
        InputStream objectContent = object.getObjectContent();
        return objectContent;
    }
}

19 Source : AliOssTools.java
with MIT License
from xiaodaojava

public AliOssTools setOssClient(OSSClient ossClient) {
    this.ossClient = ossClient;
    return this;
}

19 Source : AliZone.java
with Apache License 2.0
from tal-tech

public clreplaced AliZone implements StorageZone {

    private StorageConfig conf = null;

    private OSSClient client = null;

    public static StorageZone create(StorageConfig conf) {
        return new AliZone(conf);
    }

    protected AliZone(StorageConfig conf) {
        this.conf = conf;
        this.client = new OSSClient(conf.getEndpoint(), conf.getAccessKey(), conf.getSecretKey());
    }

    @Override
    public StorageFile create(String urlOrPath) {
        return AliFile.create(client, conf, urlOrPath, false);
    }

    @Override
    public StorageFile lookup(String urlOrPath) {
        return AliFile.create(client, conf, urlOrPath, true);
    }
}

19 Source : OSSTest.java
with Apache License 2.0
from MinsxCloud

public clreplaced OSSTest {

    private OSSClient ossClient;

    @Before
    public void initial() {
        ossClient = new OSSClient("http://oss-cn-hangzhou.aliyuncs.com", "LTAI94azdAVJieZJ", "SaFDFCHSGCljmleQtRdVuZHmeedvty");
    }

    @After
    public void end() {
        ossClient.shutdown();
    }

    @Test
    public void uploadFile() throws Throwable {
        UploadFileRequest request = new UploadFileRequest("minsx-bucket", "key");
        UploadFileResult result = ossClient.uploadFile(request);
        System.out.println(JSON.toJSONString(result));
    }

    @Test
    public void listAllObjects() {
        final int maxKeys = 200;
        String nextMarker = null;
        ObjectListing objectListing = null;
        do {
            objectListing = ossClient.listObjects(new ListObjectsRequest("minsx-bucket").withMarker(nextMarker).withMaxKeys(maxKeys));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                System.out.println("\t" + s.getKey());
            }
            nextMarker = objectListing.getNextMarker();
        } while (objectListing.isTruncated());
    }

    @Test
    public void multipartUpload() throws FileNotFoundException {
        InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest("minsx-bucket", "A.docx");
        InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(request);
        String uploadId = result.getUploadId();
        List<PartETag> partETags = new ArrayList<PartETag>();
        File file = new File("E:\\Temp\\A.docx");
        for (int i = 0; i < file.length(); i += 100 * 1024) {
            InputStream instream = new FileInputStream(file);
            UploadPartRequest uploadPartRequest = new UploadPartRequest();
            uploadPartRequest.setBucketName("minsx-bucket");
            uploadPartRequest.setKey("A.docx");
            uploadPartRequest.setUploadId(uploadId);
            uploadPartRequest.setInputStream(instream);
            uploadPartRequest.setPartSize(100 * 1024);
            uploadPartRequest.setPartNumber(i / (100 * 1024) + 1);
            UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
            partETags.add(uploadPartResult.getPartETag());
        }
        Collections.sort(partETags, new Comparator<PartETag>() {

            @Override
            public int compare(PartETag p1, PartETag p2) {
                return p1.getPartNumber() - p2.getPartNumber();
            }
        });
        CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest("minsx-bucket", "A.docx", uploadId, partETags);
        ossClient.completeMultipartUpload(completeMultipartUploadRequest);
    }

    @Test
    public void createFolder() {
        ossClient.putObject("minsx-bucket", "www/", new ByteArrayInputStream("".getBytes()));
    }

    @Test
    public void name() throws Throwable {
        // 设置断点续传请求
        UploadFileRequest uploadFileRequest = new UploadFileRequest("<yourBucketName>", "<yourKey>");
        // 指定上传的本地文件
        uploadFileRequest.setUploadFile("<yourLocalFile>");
        // 指定上传并发线程数
        uploadFileRequest.setTaskNum(5);
        // 指定上传的分片大小
        uploadFileRequest.setPartSize(1 * 1024 * 1024);
        // 开启断点续传
        uploadFileRequest.setEnableCheckpoint(true);
        // 断点续传上传
        ossClient.uploadFile(uploadFileRequest);
    }
}

19 Source : AliOssUtils.java
with MIT License
from leslie1015

public clreplaced AliOssUtils {

    /**
     * 懒汉式单例,此处初始化时非线程安全,考虑到后台用户量,暂不优化
     */
    private static OSSClient OSS_CLIENT = null;

    private static OSSClient getOSSClient() {
        if (null == OSS_CLIENT) {
            OSS_CLIENT = new OSSClient(AliyunOssConfig.getEndpoint(), AliyunOssConfig.getAccessKeyId(), AliyunOssConfig.getAccessKeySecret());
        }
        return OSS_CLIENT;
    }

    public static void uploadFile(MultipartFile multipartFile, String fileName) {
        OSSClient ossClient = getOSSClient();
        try {
            if (!getOSSClient().doesBucketExist(AliyunOssConfig.getDefaultBucketName())) {
                ossClient.createBucket(AliyunOssConfig.getDefaultBucketName());
            }
            ossClient.putObject(AliyunOssConfig.getDefaultBucketName(), fileName, multipartFile.getInputStream());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        // ossClient.shutdown();
        }
    }

    public static void download(String fileName) {
        OSSClient ossClient = getOSSClient();
        try {
            // 下载文件。详细请参看“SDK手册 > Java-SDK > 下载文件”。
            // 链接地址是:https://help.aliyun.com/doreplacedent_detail/oss/sdk/java-sdk/download_object.html?spm=5176.docoss/sdk/java-sdk/manage_object
            OSSObject ossObject = ossClient.getObject(AliyunOssConfig.getDefaultBucketName(), fileName);
            InputStream inputStream = ossObject.getObjectContent();
            StringBuilder objectContent = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            while (true) {
                String line = reader.readLine();
                if (line == null) {
                    break;
                }
                objectContent.append(line);
            }
            inputStream.close();
            System.out.println("Object:" + fileName + "的内容是:" + objectContent);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        // ossClient.shutdown();
        }
    }

    public static void deleteFile(String fileName) {
        OSSClient ossClient = getOSSClient();
        try {
            ossClient.deleteObject(AliyunOssConfig.getDefaultBucketName(), fileName);
        } catch (Exception e) {
        } finally {
        // ossClient.shutdown();
        }
    }

    public static void listAllFiles() {
        OSSClient ossClient = getOSSClient();
        try {
            ObjectListing objectListing = ossClient.listObjects(AliyunOssConfig.getDefaultBucketName());
            List<OSSObjectSummary> objectSummary = objectListing.getObjectSummaries();
            System.out.println("您有以下Object:");
            for (OSSObjectSummary object : objectSummary) {
                System.out.println("\t" + object.getKey());
            }
        } catch (Exception e) {
        } finally {
        // ossClient.shutdown();
        }
    }
}

19 Source : AliyunFileStorage.java
with MIT License
from leecho

/**
 * 阿里云文件上传
 *
 * @author LIQIU
 * @date 2017-12-14-上午10:53
 */
public clreplaced AliyunFileStorage implements FileStorage {

    /**
     * oss客户端
     */
    private OSSClient ossClient = null;

    /**
     * oss的bucket名称
     */
    private String bucketName;

    public AliyunFileStorage(OSSClient ossClient) {
        this.ossClient = ossClient;
    }

    @Override
    public void store(byte[] fileBytes, String key) {
        ossClient.putObject(bucketName, key, new ByteArrayInputStream(fileBytes));
    }

    @Override
    public void store(InputStream input, String key) {
        ossClient.putObject(bucketName, key, input);
    }

    @Override
    public byte[] getBytes(String key) {
        OSSObject ossObject = ossClient.getObject(bucketName, key);
        BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
        byte[] buf = new byte[1024];
        InputStream in = ossObject.getObjectContent();
        for (int n = 0; n != -1; ) {
            try {
                n = in.read(buf, 0, buf.length);
            } catch (IOException e) {
                throw new RuntimeException("download file error!");
            }
        }
        try {
            in.close();
            reader.close();
        } catch (IOException e) {
            throw new RuntimeException("download file error!");
        }
        return buf;
    }

    @Override
    public void remove(String key) {
        ossClient.deleteObject(bucketName, key);
    }

    @Override
    public InputStream getInputStream(String key) {
        return ossClient.getObject(bucketName, key).getObjectContent();
    }

    @Override
    public String getDownloadUrl(String key) {
        BucketInfo bucketInfo = ossClient.getBucketInfo(this.getBucketName());
        Bucket bucket = bucketInfo.getBucket();
        return "http://" + bucket.getName() + "." + bucket.getExtranetEndpoint() + "/" + key;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    @PreDestroy
    public void destroy() {
        ossClient.shutdown();
    }
}

19 Source : AliyunCloudStorageService.java
with Apache License 2.0
from kellen0903

/**
 * 阿里云存储
 * @author chenshun
 * @email [email protected]
 * @date 2017-03-26 16:22
 */
public clreplaced AliyunCloudStorageService extends CloudStorageService {

    private OSSClient client;

    public AliyunCloudStorageService(CloudStorageConfig config) {
        this.config = config;
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new RRException("上传文件失败,请检查配置信息", e);
        }
        return config.getAliyunDomain() + "/" + path;
    }

    @Override
    public String uploadSuffix(byte[] data, String suffix) {
        return upload(data, getPath(config.getAliyunPrefix(), suffix));
    }

    @Override
    public String uploadSuffix(InputStream inputStream, String suffix) {
        return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
    }

    @Override
    public String getToken(long expireTime) {
        return null;
    }
}

19 Source : AliyunCloudStorage.java
with Apache License 2.0
from iszhouhua

/**
 * 阿里云存储
 */
public clreplaced AliyunCloudStorage extends BaseStorage {

    private OSSClient client;

    public AliyunCloudStorage(StorageConfig config) {
        super(config);
        // 初始化
        init();
    }

    private void init() {
        client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret());
    }

    @Override
    public String upload(byte[] data, String path) {
        return upload(new ByteArrayInputStream(data), path);
    }

    @Override
    public String upload(InputStream inputStream, String path) {
        try {
            client.putObject(config.getAliyunBucketName(), path, inputStream);
        } catch (Exception e) {
            throw new BlogException(CodeEnum.UPLOAD_ERROR.getValue(), "上传文件失败,请检查配置信息", e);
        }
        String domain = config.getAliyunDomain();
        if (!domain.endsWith("/")) {
            domain += "/";
        }
        return domain + path;
    }

    @Override
    public String uploadSuffix(byte[] data, String suffix) {
        return upload(data, getPath(config.getAliyunPrefix(), suffix));
    }

    @Override
    public String uploadSuffix(InputStream inputStream, String suffix) {
        return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
    }
}

19 Source : AliYunOssProvider.java
with MIT License
from aoju

/**
 * 存储服务-阿里云
 *
 * @author Kimi Liu
 * @version 6.2.1
 * @since JDK 1.8+
 */
public clreplaced AliYunOssProvider extends AbstractProvider {

    private OSSClient client;

    public AliYunOssProvider(Context context) {
        this.context = context;
        replacedert.notBlank(this.context.getPrefix(), "[prefix] not defined");
        replacedert.notBlank(this.context.getEndpoint(), "[endpoint] not defined");
        replacedert.notBlank(this.context.getBucket(), "[bucket] not defined");
        replacedert.notBlank(this.context.getAccessKey(), "[accessKey] not defined");
        replacedert.notBlank(this.context.getSecretKey(), "[secretKey] not defined");
        replacedert.notNull(this.context.isSecure(), "[secure] not defined");
        this.client = new OSSClient(this.context.getEndpoint(), new DefaultCredentialProvider(this.context.getAccessKey(), this.context.getSecretKey()), null);
        if (!this.client.doesBucketExist(this.context.getBucket())) {
            this.client.createBucket(this.context.getBucket());
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(this.context.getBucket());
            createBucketRequest.setCannedACL(this.context.isSecure() ? CannedAccessControlList.Private : CannedAccessControlList.PublicRead);
            this.client.createBucket(createBucketRequest);
        }
    }

    @Override
    public Message download(String fileName) {
        return download(this.context.getBucket(), fileName);
    }

    @Override
    public Message download(String bucket, String fileName) {
        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流
        OSSObject ossObject = this.client.getObject(bucket, fileName);
        // 读取文件内容
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()))) {
            while (true) {
                String line = reader.readLine();
                if (line == null) {
                    break;
                }
            }
            return Message.builder().data(reader).build();
        } catch (Exception e) {
            Logger.error("file download failed", e.getMessage());
        }
        return Message.builder().errcode(Builder.ErrorCode.FAILURE.getCode()).errmsg(Builder.ErrorCode.FAILURE.getMsg()).build();
    }

    @Override
    public Message download(String fileName, File file) {
        return download(this.context.getBucket(), fileName, file);
    }

    @Override
    public Message download(String bucket, String fileName, File file) {
        this.client.getObject(new GetObjectRequest(bucket, fileName), file);
        return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).build();
    }

    @Override
    public Message list() {
        ListObjectsRequest request = new ListObjectsRequest(this.context.getBucket());
        ObjectListing objectListing = client.listObjects(request);
        return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).data(objectListing.getObjectSummaries().stream().map(item -> {
            Attachs storageItem = new Attachs();
            storageItem.setName(item.getKey());
            storageItem.setSize(StringKit.toString(item.getSize()));
            Map<String, Object> extend = Maps.newHashMap();
            extend.put("tag", item.getETag());
            extend.put("storageClreplaced", item.getStorageClreplaced());
            extend.put("lastModified", item.getLastModified());
            storageItem.setExtend(extend);
            return storageItem;
        }).collect(Collectors.toList())).build();
    }

    @Override
    public Message rename(String oldName, String newName) {
        return rename(this.context.getBucket(), oldName, newName);
    }

    @Override
    public Message rename(String bucket, String oldName, String newName) {
        boolean keyExists = true;
        try {
            this.client.getObjectMetadata(bucket, oldName);
        } catch (Exception e) {
            keyExists = false;
        }
        if (keyExists) {
            this.client.copyObject(bucket, oldName, bucket, newName);
        }
        return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).build();
    }

    @Override
    public Message upload(String fileName, byte[] content) {
        return upload(this.context.getBucket(), fileName, content);
    }

    @Override
    public Message upload(String bucket, String fileName, InputStream content) {
        try {
            byte[] bytes = new byte[content.available()];
            return upload(this.context.getBucket(), fileName, bytes);
        } catch (IOException e) {
            Logger.error("file upload failed ", e.getMessage());
        }
        return Message.builder().errcode(Builder.ErrorCode.FAILURE.getCode()).errmsg(Builder.ErrorCode.FAILURE.getMsg()).build();
    }

    @Override
    public Message upload(String bucket, String fileName, byte[] content) {
        ByteArrayInputStream bis = new ByteArrayInputStream(content);
        try {
            PutObjectResult objectResult = this.client.putObject(bucket, fileName, bis);
            ResponseMessage response = objectResult.getResponse();
            if (!response.isSuccessful()) {
                return Message.builder().errcode(Builder.ErrorCode.FAILURE.getCode()).errmsg(response.getErrorResponsereplacedtring()).build();
            }
            return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).data(Attachs.builder().name(fileName).size(Normal.EMPTY + response.getContentLength()).path(response.getUri())).build();
        } catch (Exception e) {
            this.client.putObject(bucket, fileName, bis);
            Logger.error("file upload failed ", e.getMessage());
        }
        return Message.builder().errcode(Builder.ErrorCode.FAILURE.getCode()).errmsg(Builder.ErrorCode.FAILURE.getMsg()).build();
    }

    @Override
    public Message remove(String fileName) {
        return remove(this.context.getBucket(), fileName);
    }

    @Override
    public Message remove(String bucket, String fileName) {
        this.client.deleteObject(bucket, fileName);
        return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).build();
    }

    @Override
    public Message remove(String bucket, Path path) {
        remove(bucket, path.toString());
        return Message.builder().errcode(Builder.ErrorCode.SUCCESS.getCode()).errmsg(Builder.ErrorCode.SUCCESS.getMsg()).build();
    }
}

19 Source : OSSUtil.java
with Apache License 2.0
from anylineorg

public void setClient(OSSClient client) {
    this.client = client;
}

19 Source : AliyunOSSClientUtil.java
with Apache License 2.0
from airufei

// 测试
public static void main(String[] args) {
    OSSClient ossClient = AliyunOSSClientUtil.getOSSClient();
    /*//初始化OSSClient

        //上传文件
        String file = "E:\\mnt\\images\\pic\\pider08\\wx_act_img3ca44b69364145cfb6c382a432a3bbd1.jpg";
        File filess = new File(file);
        String md5key = AliyunOSSClientUtil.uploadObject2OSS(ossClient, filess, BACKET_NAME, FOLDER);
        logger.info("上传后的文件MD5数字唯一签名:" + md5key);*/
    for (int j = 1; j < 50; j++) {
        String path = "pic/pider0" + j;
        for (int i = 0; i < 200; i++) {
            deleteList(ossClient, BACKET_NAME, path);
        }
    }
}

19 Source : AliFileFileHandler.java
with Apache License 2.0
from 734839030

/**
 * 阿里云文件处理
 *
 * @author hdf 2018年4月15日
 */
public clreplaced AliFileFileHandler implements FileHandler {

    private OSSClient ossClient;

    private String bucketName;

    /**
     * @param endpoint
     * @param accessKeyId
     * @param accessKeySecret
     */
    public AliFileFileHandler(String endpoint, String accessKeyId, String accessKeySecret, String bucketName) {
        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        this.bucketName = bucketName;
    }

    /**
     * storePath 在阿里云oss 中即为 BucketName
     */
    @Override
    public void upload(String relativePath, InputStream in) throws IOException {
        ossClient.putObject(bucketName, handleRelativePath(relativePath), in);
        if (null != in) {
            in.close();
        }
    }

    @Override
    public InputStream download(String relativePath) throws FileNotFoundException {
        OSSObject object = ossClient.getObject(bucketName, handleRelativePath(relativePath));
        return object.getObjectContent();
    }

    /**
     * 阿里云路径不能以/ 开始
     * @param relativePath
     * @return
     */
    private String handleRelativePath(String relativePath) {
        replacedert.hasLength(relativePath, "路径为空");
        if (relativePath.startsWith("/")) {
            relativePath = relativePath.substring(1);
        }
        return relativePath;
    }

    @Override
    public void destroy() {
        if (null != ossClient) {
            ossClient.shutdown();
        }
    }
}

18 Source : AliyunOSSAutoConfigure.java
with Apache License 2.0
from zlt2000

/**
 * 阿里云文件存储client
 * 只有配置了aliyun.oss.access-key才可以使用
 */
@Bean
public OSSClient ossClient() {
    OSSClient ossClient = new OSSClient(fileProperties.getOss().getEndpoint(), new DefaultCredentialProvider(fileProperties.getOss().getAccessKey(), fileProperties.getOss().getAccessKeySecret()), null);
    return ossClient;
}

18 Source : OssBootUtil.java
with Apache License 2.0
from zhangdaiscott

/**
 * @Description: 阿里云 oss 上传工具类(高依赖版)
 * @Date: 2019/5/10
 */
@Slf4j
public clreplaced OssBootUtil {

    private static String endPoint;

    private static String accessKeyId;

    private static String accessKeySecret;

    private static String bucketName;

    private static String staticDomain;

    public static void setEndPoint(String endPoint) {
        OssBootUtil.endPoint = endPoint;
    }

    public static void setAccessKeyId(String accessKeyId) {
        OssBootUtil.accessKeyId = accessKeyId;
    }

    public static void setAccessKeySecret(String accessKeySecret) {
        OssBootUtil.accessKeySecret = accessKeySecret;
    }

    public static void setBucketName(String bucketName) {
        OssBootUtil.bucketName = bucketName;
    }

    public static void setStaticDomain(String staticDomain) {
        OssBootUtil.staticDomain = staticDomain;
    }

    public static String getStaticDomain() {
        return staticDomain;
    }

    /**
     * oss 工具客户端
     */
    private static OSSClient ossClient = null;

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(MultipartFile file, String fileDir, String customBucket) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(customBucket)) {
            newBucket = customBucket;
        }
        try {
            // 判断桶是否存在,不存在则创建桶
            if (!ossClient.doesBucketExist(newBucket)) {
                ossClient.createBucket(newBucket);
            }
            // 获取文件名
            String orgName = file.getOriginalFilename();
            orgName = CommonUtils.getFileName(orgName);
            String fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
            // 设置权限(公开读)
            // ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 文件上传
     * @param file
     * @param fileDir
     * @return
     */
    public static String upload(MultipartFile file, String fileDir) {
        return upload(file, fileDir, null);
    }

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(FileItemStream file, String fileDir) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url) {
        deleteUrl(url, null);
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url, String bucket) {
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(bucket)) {
            newBucket = bucket;
        }
        String bucketUrl = "";
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            bucketUrl = staticDomain + "/";
        } else {
            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
        }
        url = url.replace(bucketUrl, "");
        ossClient.deleteObject(newBucket, url);
    }

    /**
     * 删除文件
     * @param fileName
     */
    public static void delete(String fileName) {
        ossClient.deleteObject(bucketName, fileName);
    }

    /**
     * 获取文件流
     * @param objectName
     * @param bucket
     * @return
     */
    public static InputStream getOssFile(String objectName, String bucket) {
        InputStream inputStream = null;
        try {
            String newBucket = bucketName;
            if (oConvertUtils.isNotEmpty(bucket)) {
                newBucket = bucket;
            }
            initOSS(endPoint, accessKeyId, accessKeySecret);
            OSSObject ossObject = ossClient.getObject(newBucket, objectName);
            inputStream = new BufferedInputStream(ossObject.getObjectContent());
        } catch (Exception e) {
            log.info("文件获取失败" + e.getMessage());
        }
        return inputStream;
    }

    /**
     * 获取文件流
     * @param objectName
     * @return
     */
    public static InputStream getOssFile(String objectName) {
        return getOssFile(objectName, null);
    }

    /**
     * 获取文件外链
     * @param bucketName
     * @param objectName
     * @param expires
     * @return
     */
    public static String getObjectURL(String bucketName, String objectName, Date expires) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        try {
            if (ossClient.doesObjectExist(bucketName, objectName)) {
                URL url = ossClient.generatePresignedUrl(bucketName, objectName, expires);
                return URLDecoder.decode(url.toString(), "UTF-8");
            }
        } catch (Exception e) {
            log.info("文件路径获取失败" + e.getMessage());
        }
        return null;
    }

    /**
     * 初始化 oss 客户端
     *
     * @return
     */
    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), new ClientConfiguration());
        }
        return ossClient;
    }

    /**
     * 上传文件到oss
     * @param stream
     * @param relativePath
     * @return
     */
    public static String upload(InputStream stream, String relativePath) {
        String FILE_URL = null;
        String fileUrl = relativePath;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            FILE_URL = staticDomain + "/" + relativePath;
        } else {
            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
        }
        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), stream);
        // 设置权限(公开读)
        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
        if (result != null) {
            log.info("------OSS文件上传成功------" + fileUrl);
        }
        return FILE_URL;
    }
}

18 Source : OssBootUtil.java
with Apache License 2.0
from zhangdaiscott

/**
 * @Description: 阿里云 oss 上传工具类(高依赖版)
 * @Date: 2019/5/10
 */
@Slf4j
public clreplaced OssBootUtil {

    private static String endPoint;

    private static String accessKeyId;

    private static String accessKeySecret;

    private static String bucketName;

    private static String staticDomain;

    public static void setEndPoint(String endPoint) {
        OssBootUtil.endPoint = endPoint;
    }

    public static void setAccessKeyId(String accessKeyId) {
        OssBootUtil.accessKeyId = accessKeyId;
    }

    public static void setAccessKeySecret(String accessKeySecret) {
        OssBootUtil.accessKeySecret = accessKeySecret;
    }

    public static void setBucketName(String bucketName) {
        OssBootUtil.bucketName = bucketName;
    }

    public static void setStaticDomain(String staticDomain) {
        OssBootUtil.staticDomain = staticDomain;
    }

    public static String getStaticDomain() {
        return staticDomain;
    }

    public static String getEndPoint() {
        return endPoint;
    }

    public static String getAccessKeyId() {
        return accessKeyId;
    }

    public static String getAccessKeySecret() {
        return accessKeySecret;
    }

    public static String getBucketName() {
        return bucketName;
    }

    public static OSSClient getOssClient() {
        return ossClient;
    }

    /**
     * oss 工具客户端
     */
    private static OSSClient ossClient = null;

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(MultipartFile file, String fileDir, String customBucket) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(customBucket)) {
            newBucket = customBucket;
        }
        try {
            // 判断桶是否存在,不存在则创建桶
            if (!ossClient.doesBucketExist(newBucket)) {
                ossClient.createBucket(newBucket);
            }
            // 获取文件名
            String orgName = file.getOriginalFilename();
            if ("" == orgName) {
                orgName = file.getName();
            }
            orgName = CommonUtils.getFileName(orgName);
            String fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            // update-begin-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
            fileDir = StrAttackFilter.filter(fileDir);
            // update-end-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
            // 设置权限(公开读)
            // ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 获取原始URL
     * @param url: 原始URL
     * @Return: java.lang.String
     */
    public static String getOriginalUrl(String url) {
        String originalDomain = "https://" + bucketName + "." + endPoint;
        if (url.indexOf(staticDomain) != -1) {
            url = url.replace(staticDomain, originalDomain);
        }
        return url;
    }

    /**
     * 文件上传
     * @param file
     * @param fileDir
     * @return
     */
    public static String upload(MultipartFile file, String fileDir) {
        return upload(file, fileDir, null);
    }

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(FileItemStream file, String fileDir) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileDir = StrAttackFilter.filter(fileDir);
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url) {
        deleteUrl(url, null);
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url, String bucket) {
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(bucket)) {
            newBucket = bucket;
        }
        String bucketUrl = "";
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            bucketUrl = staticDomain + "/";
        } else {
            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
        }
        url = url.replace(bucketUrl, "");
        ossClient.deleteObject(newBucket, url);
    }

    /**
     * 删除文件
     * @param fileName
     */
    public static void delete(String fileName) {
        ossClient.deleteObject(bucketName, fileName);
    }

    /**
     * 获取文件流
     * @param objectName
     * @param bucket
     * @return
     */
    public static InputStream getOssFile(String objectName, String bucket) {
        InputStream inputStream = null;
        try {
            String newBucket = bucketName;
            if (oConvertUtils.isNotEmpty(bucket)) {
                newBucket = bucket;
            }
            initOSS(endPoint, accessKeyId, accessKeySecret);
            OSSObject ossObject = ossClient.getObject(newBucket, objectName);
            inputStream = new BufferedInputStream(ossObject.getObjectContent());
        } catch (Exception e) {
            log.info("文件获取失败" + e.getMessage());
        }
        return inputStream;
    }

    /**
     * 获取文件流
     * @param objectName
     * @return
     */
    public static InputStream getOssFile(String objectName) {
        return getOssFile(objectName, null);
    }

    /**
     * 获取文件外链
     * @param bucketName
     * @param objectName
     * @param expires
     * @return
     */
    public static String getObjectURL(String bucketName, String objectName, Date expires) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        try {
            if (ossClient.doesObjectExist(bucketName, objectName)) {
                URL url = ossClient.generatePresignedUrl(bucketName, objectName, expires);
                return URLDecoder.decode(url.toString(), "UTF-8");
            }
        } catch (Exception e) {
            log.info("文件路径获取失败" + e.getMessage());
        }
        return null;
    }

    /**
     * 初始化 oss 客户端
     *
     * @return
     */
    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), new ClientConfiguration());
        }
        return ossClient;
    }

    /**
     * 上传文件到oss
     * @param stream
     * @param relativePath
     * @return
     */
    public static String upload(InputStream stream, String relativePath) {
        String FILE_URL = null;
        String fileUrl = relativePath;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            FILE_URL = staticDomain + "/" + relativePath;
        } else {
            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
        }
        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), stream);
        // 设置权限(公开读)
        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
        if (result != null) {
            log.info("------OSS文件上传成功------" + fileUrl);
        }
        return FILE_URL;
    }
}

18 Source : AliyunFileStorageStrategy.java
with Apache License 2.0
from yang-cruise

/**
 * 阿里云oss操作封装
 *
 * @author ChenYichen
 */
@Slf4j
public clreplaced AliyunFileStorageStrategy implements FileStorageStrategy {

    private final Easy4jOssProperties.Aliyun aliyun;

    private final OSSClient ossClient;

    public AliyunFileStorageStrategy(Easy4jOssProperties.Aliyun aliyun, OSSClient ossClient) {
        this.aliyun = aliyun;
        this.ossClient = ossClient;
    }

    @Override
    public boolean isExistingFile(String fileName) {
        try {
            ossClient.getObject(this.aliyun.getBucketName(), fileName);
        } catch (OSSException | ClientException e) {
            log.info("阿里云上找不到该文件!文件名:" + fileName);
            return false;
        }
        return true;
    }

    @Override
    public byte[] getFileBytes(String fileName) {
        OSSObject object;
        try {
            object = ossClient.getObject(this.aliyun.getBucketName(), fileName);
        } catch (OSSException | ClientException e) {
            log.info("阿里云上找不到该文件,文件名:{}", fileName);
            throw new BusinessException("文件不存在");
        }
        try (InputStream objectContent = object.getObjectContent()) {
            return FileUtil.toByteArray(objectContent);
        } catch (Exception e) {
            log.error("流读取错误:{}", e.getMessage());
            throw new BusinessException("文件不存在或已损坏");
        }
    }

    @Override
    public void saveFile(String fileName, InputStream inputStream) {
        ossClient.putObject(this.aliyun.getBucketName(), fileName, inputStream);
    }

    @Override
    public void saveFile(String fileName, byte[] bytes) {
        ossClient.putObject(this.aliyun.getBucketName(), fileName, new ByteArrayInputStream(bytes));
    }

    @Override
    public boolean copyFile(String sourceFileFinalName, String newFileFinalName) {
        String bucketName = this.aliyun.getBucketName();
        CopyObjectRequest copyObjectFile = new CopyObjectRequest(bucketName, sourceFileFinalName, bucketName, newFileFinalName);
        ObjectMetadata meta = new ObjectMetadata();
        copyObjectFile.setNewObjectMetadata(meta);
        try {
            ossClient.copyObject(copyObjectFile);
        } catch (Exception e) {
            log.error("oss拷贝文件错误:{}", e.getMessage());
            return false;
        }
        return true;
    }

    @Override
    public String getFileUrl(@NonNull String storageName) {
        String domain = this.aliyun.getBucketName() + "." + this.aliyun.getEndpoint();
        return "//" + domain + "/" + storageName;
    }
}

18 Source : AliOssTemplate.java
with GNU Lesser General Public License v3.0
from xkcoding

/**
 * <p>
 * 阿里云 OSS 操作,参考文档:https://help.aliyun.com/doreplacedent_detail/31947.html?spm=a2c4g.11186623.3.2.fbba69cbWx4YuF
 * </p>
 *
 * @author yangkai.shen
 * @date Created in 2019/12/31 17:19
 */
public clreplaced AliOssTemplate extends AbstractOssTemplate {

    private final OSSClient ossClient;

    private final OssProperties ossProperties;

    public AliOssTemplate(OSSClient ossClient, OssProperties ossProperties, OssRule ossRule) {
        super(ossProperties, ossRule, OssType.ALI_OSS);
        this.ossClient = ossClient;
        this.ossProperties = ossProperties;
    }

    /**
     * 创建 存储桶
     *
     * @param bucketName 存储桶名称
     */
    @Override
    public void createBucket(String bucketName) {
        if (!bucketExists(bucketName)) {
            ossClient.createBucket(getBucketName(bucketName));
            ossClient.setBucketAcl(getBucketName(bucketName), CannedAccessControlList.PublicRead);
        }
    }

    /**
     * 删除 存储桶
     *
     * @param bucketName 存储桶名称
     */
    @Override
    public void deleteBucket(String bucketName) {
        if (bucketExists(bucketName)) {
            ossClient.deleteBucket(getBucketName(bucketName));
        }
    }

    /**
     * 存储桶是否存在
     *
     * @param bucketName 存储桶名称
     * @return boolean
     */
    @Override
    public boolean bucketExists(String bucketName) {
        return ossClient.doesBucketExist(getBucketName(bucketName));
    }

    /**
     * 拷贝文件
     *
     * @param sourceBucketName 源存储桶名称
     * @param fileName         存储桶文件名称
     * @param targetBucketName 目标存储桶名称
     */
    @Override
    public void copyFile(String sourceBucketName, String fileName, String targetBucketName) {
        copyFile(sourceBucketName, fileName, targetBucketName, fileName);
    }

    /**
     * 拷贝文件,重命名
     *
     * @param sourceBucketName 源存储桶名称
     * @param fileName         存储桶文件名称
     * @param targetBucketName 目标存储桶名称
     * @param targetFileName   目标存储桶文件名称
     */
    @Override
    public void copyFile(String sourceBucketName, String fileName, String targetBucketName, String targetFileName) {
        ossClient.copyObject(getBucketName(sourceBucketName), fileName, getBucketName(targetBucketName), targetFileName);
    }

    /**
     * 获取文件元信息
     *
     * @param fileName 存储桶文件名称
     * @return 文件元信息
     */
    @Override
    public OssFileMetaInfo getFileMetaInfo(String fileName) {
        return getFileMetaInfo(ossProperties.getAliOss().getBucketName(), fileName);
    }

    /**
     * 获取文件元信息
     *
     * @param bucketName 存储桶名称
     * @param fileName   存储桶文件名称
     * @return 文件元信息
     */
    @Override
    public OssFileMetaInfo getFileMetaInfo(String bucketName, String fileName) {
        final ObjectMetadata metadata = ossClient.getObjectMetadata(getBucketName(bucketName), fileName);
        OssFileMetaInfo metaInfo = new OssFileMetaInfo();
        metaInfo.setName(fileName);
        metaInfo.setLink(getFileLink(metaInfo.getName()));
        metaInfo.setHash(metadata.getContentMD5());
        metaInfo.setLength(metadata.getContentLength());
        metaInfo.setUploadTime(metadata.getLastModified());
        metaInfo.setContentType(metadata.getContentType());
        return metaInfo;
    }

    /**
     * 获取 OSS 域名地址
     *
     * @return 域名地址
     */
    private String getOssEndpoint() {
        return getOssEndpoint(ossProperties.getAliOss().getBucketName());
    }

    /**
     * 获取 OSS 域名地址
     *
     * @param bucketName 存储桶名称
     * @return 域名地址
     */
    private String getOssEndpoint(String bucketName) {
        String prefix = ossProperties.getAliOss().getHttps() ? "https://" : "http://";
        return prefix + getBucketName(bucketName) + StrUtil.DOT + ossProperties.getAliOss().getEndpoint().replaceFirst(prefix, StrUtil.EMPTY);
    }

    /**
     * 获取文件相对路径
     *
     * @param fileName 存储桶对象名称
     * @return 文件相对路径
     */
    @Override
    public String getFilePath(String fileName) {
        return getOssEndpoint().concat(StrUtil.SLASH).concat(fileName);
    }

    /**
     * 获取文件相对路径
     *
     * @param bucketName 存储桶名称
     * @param fileName   存储桶对象名称
     * @return 文件相对路径
     */
    @Override
    public String getFilePath(String bucketName, String fileName) {
        return getOssEndpoint(bucketName).concat(StrUtil.SLASH).concat(fileName);
    }

    /**
     * 获取文件地址
     *
     * @param fileName 存储桶对象名称
     * @return 文件地址
     */
    @Override
    public String getFileLink(String fileName) {
        return getOssEndpoint().concat(StrUtil.SLASH).concat(fileName);
    }

    /**
     * 获取文件地址
     *
     * @param bucketName 存储桶名称
     * @param fileName   存储桶对象名称
     * @return 文件地址
     */
    @Override
    public String getFileLink(String bucketName, String fileName) {
        return getOssEndpoint(bucketName).concat(StrUtil.SLASH).concat(fileName);
    }

    /**
     * 上传文件
     *
     * @param file 上传文件类
     * @return 文件信息
     */
    @Override
    public OssFile uploadFile(MultipartFile file) {
        return uploadFile(file.getOriginalFilename(), file);
    }

    /**
     * 上传文件
     *
     * @param fileName 上传文件名
     * @param file     上传文件类
     * @return 文件信息
     */
    @Override
    public OssFile uploadFile(String fileName, MultipartFile file) {
        return uploadFile(ossProperties.getAliOss().getBucketName(), fileName, file);
    }

    /**
     * 上传文件
     *
     * @param bucketName 存储桶名称
     * @param fileName   上传文件名
     * @param file       上传文件类
     * @return 文件信息
     */
    @Override
    @SneakyThrows
    public OssFile uploadFile(String bucketName, String fileName, MultipartFile file) {
        return uploadFile(bucketName, fileName, file.getInputStream());
    }

    /**
     * 上传文件
     *
     * @param fileName 存储桶对象名称
     * @param stream   文件流
     * @return 文件信息
     */
    @Override
    public OssFile uploadFile(String fileName, InputStream stream) {
        return uploadFile(ossProperties.getAliOss().getBucketName(), fileName, stream);
    }

    /**
     * 上传文件
     *
     * @param bucketName 存储桶名称
     * @param fileName   存储桶对象名称
     * @param stream     文件流
     * @return 文件信息
     */
    @Override
    public OssFile uploadFile(String bucketName, String fileName, InputStream stream) {
        return upload(bucketName, fileName, stream, false);
    }

    private OssFile upload(String bucketName, String fileName, InputStream stream, boolean cover) {
        // 创建存储桶
        createBucket(bucketName);
        // 获取 oss 存储文件名
        String key = getFileName(fileName);
        // 是否覆盖上传
        if (cover) {
            ossClient.putObject(getBucketName(bucketName), key, stream);
        } else {
            PutObjectResult response = ossClient.putObject(getBucketName(bucketName), key, stream);
            int retry = 0;
            int retryCount = 5;
            // 重试 5 次
            while (StrUtil.isEmpty(response.getETag()) && retry < retryCount) {
                response = ossClient.putObject(getBucketName(bucketName), key, stream);
                retry++;
            }
        }
        OssFile ossFile = new OssFile();
        ossFile.setName(key);
        ossFile.setOriginalName(fileName);
        ossFile.setLink(getFileLink(bucketName, key));
        return ossFile;
    }

    /**
     * 删除文件
     *
     * @param fileName 存储桶对象名称
     */
    @Override
    public void deleteFile(String fileName) {
        ossClient.deleteObject(getBucketName(), fileName);
    }

    /**
     * 删除文件
     *
     * @param bucketName 存储桶名称
     * @param fileName   存储桶对象名称
     */
    @Override
    public void deleteFile(String bucketName, String fileName) {
        ossClient.deleteObject(getBucketName(bucketName), fileName);
    }

    /**
     * 批量删除文件
     *
     * @param fileNames 存储桶对象名称集合
     */
    @Override
    public void deleteFiles(List<String> fileNames) {
        fileNames.forEach(this::deleteFile);
    }

    /**
     * 批量删除文件
     *
     * @param bucketName 存储桶名称
     * @param fileNames  存储桶对象名称集合
     */
    @Override
    public void deleteFiles(String bucketName, List<String> fileNames) {
        fileNames.forEach(fileName -> deleteFile(bucketName, fileName));
    }

    public String getUploadToken() {
        return getUploadToken(ossProperties.getAliOss().getBucketName());
    }

    /**
     * 获取上传凭证,普通上传,默认 1 小时过期
     *
     * @param bucketName 存储桶名称
     * @return 上传凭证
     */
    public String getUploadToken(String bucketName) {
        // 默认过期时间1小时,单位 秒
        return getUploadToken(bucketName, ossProperties.getAliOss().getArgs().get("expireTime", 60 * 60));
    }

    /**
     * 获取上传凭证,普通上传
     * TODO 上传大小限制、基础路径
     *
     * @param bucketName 存储桶名称
     * @param expireTime 过期时间,单位秒
     * @return 上传凭证
     */
    public String getUploadToken(String bucketName, long expireTime) {
        String baseDir = "upload";
        long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
        Date expiration = new Date(expireEndTime);
        PolicyConditions policy = new PolicyConditions();
        // 默认大小限制10M
        policy.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, ossProperties.getAliOss().getArgs().get("contentLengthRange", 1024 * 1024 * 10));
        policy.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, baseDir);
        String postPolicy = ossClient.generatePostPolicy(expiration, policy);
        byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
        String encodedPolicy = BinaryUtil.toBase64String(binaryData);
        String postSignature = ossClient.calculatePostSignature(postPolicy);
        Map<String, String> respMap = new LinkedHashMap<>(16);
        respMap.put("accessid", ossProperties.getAliOss().getAccessKey());
        respMap.put("policy", encodedPolicy);
        respMap.put("signature", postSignature);
        respMap.put("dir", baseDir);
        respMap.put("host", getOssEndpoint(bucketName));
        respMap.put("expire", String.valueOf(expireEndTime / 1000));
        return JSONUtil.toJsonStr(respMap);
    }
}

18 Source : DeleteAliyunFile.java
with GNU General Public License v2.0
from Xin-Felix

public Boolean DeleteAliyunFile(String filePath, OSSClient ossClient, String bucketName) {
    try {
        // 删除文件。
        ossClient.deleteObject(bucketName, filePath);
        return true;
    } catch (Exception e) {
        return false;
    }
}

18 Source : AliOssTools.java
with MIT License
from xiaodaojava

public AliOssTools init() {
    DefaultCredentialProvider provider = new DefaultCredentialProvider(ossConfig.getAccessKey(), ossConfig.getAccessSecret());
    OSSClient client = new OSSClient(ossConfig.getEndpoint(), provider, null);
    this.ossClient = client;
    return this;
}

18 Source : OSSClientUtil.java
with Apache License 2.0
from whoiszxl

/**
 * 根据key删除OSS服务器上的文件
 *
 * @param ossClient  oss连接
 * @param bucketName 存储空间
 * @param folder     模拟文件夹名 如"qj_nanjing/"
 * @param key        Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
 */
public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key) {
    ossClient.deleteObject(bucketName, folder + key);
    log.info("删除" + bucketName + "下的文件" + folder + key + "成功");
}

18 Source : OSSClientUtil.java
with Apache License 2.0
from whoiszxl

/**
 * 删除存储空间buckName
 *
 * @param ossClient  oss对象
 * @param bucketName 存储空间
 */
public static void deleteBucket(OSSClient ossClient, String bucketName) {
    ossClient.deleteBucket(bucketName);
    log.info("删除" + bucketName + "Bucket成功");
}

18 Source : AliOssServiceImpl.java
with Apache License 2.0
from virjar

private void configureOssClient() {
    OSSClient ossClient = new OSSClient(RootConfig.ALIOss.endpoint, RootConfig.ALIOss.accessKeyId, RootConfig.ALIOss.accessKeySecret);
    if (ossClient.doesBucketExist(RootConfig.ALIOss.bucket)) {
        this.ossClient = ossClient;
    } else {
        log.warn("the bucket:{} not exist", RootConfig.ALIOss.bucket);
    }
}

18 Source : OssUtil.java
with Apache License 2.0
from variflight

public clreplaced OssUtil {

    private final Logger LOGGER = LoggerFactory.getLogger(OssUtil.clreplaced);

    private OSSClient ossClient;

    private String accessKeyId;

    private String accessKeySecret;

    private String endpoint;

    private String bucketName;

    public OssUtil() {
        accessKeyId = HlsCtx.INSTANCE().getServerMap().get("oss_accessKeyId");
        accessKeySecret = HlsCtx.INSTANCE().getServerMap().get("oss_accessKeySecret");
        endpoint = HlsCtx.INSTANCE().getServerMap().get("oss_endpoint");
        bucketName = HlsCtx.INSTANCE().getServerMap().get("oss_bucketName");
        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }

    /**
     * 本地文件上传至oss,并删除本地文件
     */
    public boolean uploadObject(String filePath, String fileName, long streamId) {
        boolean result = false;
        File file = new File(filePath + File.separator + fileName);
        if (file.exists()) {
            // 文件上传至阿里云OSS
            ossClient.putObject(bucketName, String.valueOf(streamId) + "/" + fileName, file);
            // 删除本地文件
            file.delete();
            result = true;
        }
        return result;
    }

    /**
     * 上传byte数组
     */
    public void uploadObject(byte[] mp3, String fileName, long streamId) {
        // 文件上传至阿里云OSS
        ossClient.putObject(bucketName, String.valueOf(streamId) + "/" + fileName, new ByteArrayInputStream(mp3));
    }

    /**
     * 获取OSS Object输入流
     */
    public InputStream readObject(String fileName, long streamId) {
        OSSObject ossObject = ossClient.getObject(bucketName, String.valueOf(streamId) + "/" + fileName);
        InputStream inputStream = ossObject.getObjectContent();
        return inputStream;
    }

    /**
     * 删除文件
     */
    public void deleteObject(String fileName, long streamId) {
        ossClient.deleteObject(bucketName, String.valueOf(streamId) + "/" + fileName);
    }

    /**
     * 判断object在OSS上是否存在
     */
    public boolean doesObjectExist(String fileName, long streamId) {
        return ossClient.doesObjectExist(bucketName, String.valueOf(streamId) + "/" + fileName);
    }

    /**
     * 获取object的大小
     */
    public long getObjectLength(String fileName, long streamId) {
        ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, String.valueOf(streamId) + "/" + fileName);
        return objectMetadata.getContentLength();
    }

    /**
     * 获取object头信息
     */
    public ObjectMetadata getObjectMetadata(String fileName, long streamId) {
        ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, String.valueOf(streamId) + "/" + fileName);
        return objectMetadata;
    }

    /**
     * 更新生命周期
     */
    public void updateExpirationDays(int days) {
        // 获取生命周期规则列表
        List<LifecycleRule> list = ossClient.getBucketLifecycle(bucketName);
        if (list.size() > 0) {
            LifecycleRule lifecycleRule = list.get(0);
            List<StorageTransition> storageTransitionList = lifecycleRule.getStorageTransition();
            if (storageTransitionList.size() > 0) {
                StorageTransition storageTransition = storageTransitionList.get(0);
                // 如果原转换到归档存储的时间 与设定时间不一样,则更新
                if (storageTransition.getExpirationDays() != days) {
                    storageTransition.setExpirationDays(days);
                    SetBucketLifecycleRequest setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
                    setBucketLifecycleRequest.setLifecycleRules(list);
                    ossClient.setBucketLifecycle(setBucketLifecycleRequest);
                    LOGGER.info("oss life cycle set expir : " + days + " days");
                }
            }
        }
    }

    public void closeOSSClient() {
        if (ossClient != null) {
            ossClient.shutdown();
        }
    }
}

18 Source : AliFile.java
with Apache License 2.0
from tal-tech

public clreplaced AliFile implements StorageFile {

    protected static final Logger log = LoggerFactory.getLogger(BosFile.clreplaced);

    private OSSClient ossClient = null;

    private StorageConfig conf = null;

    private String path = "";

    private boolean lookup = false;

    /**
     * 静态工厂方法,简化调用关系
     * @param ossClient
     * @param conf
     * @param path
     * @param beLookup
     * @return
     */
    public static StorageFile create(OSSClient ossClient, StorageConfig conf, String path, boolean beLookup) {
        return new AliFile(ossClient, conf, path, beLookup);
    }

    protected AliFile(OSSClient ossClient, StorageConfig conf, String path, boolean beLookup) {
        this.ossClient = ossClient;
        this.conf = conf;
        this.path = path;
        this.lookup = beLookup;
    }

    @Override
    public String getUrl() {
        if (lookup && StringUtils.isUrl(path)) {
            return path;
        }
        return String.format("%s%s", conf.getPrefixUrl(), path);
    }

    @Override
    public String getPath() {
        if (StringUtils.isUrl(path)) {
            String prefixUrl = conf.getPrefixUrl();
            if (path.startsWith(prefixUrl)) {
                return path.substring(prefixUrl.length());
            }
            return "";
        }
        return path;
    }

    @Override
    public String getFullPath() {
        return getUrl();
    }

    @Override
    public long getSize() {
        String path = getPath();
        if (StringUtils.isNotBlank(path)) {
            OSSObject oo = ossClient.getObject(conf.getBucket(), path);
            return oo.getObjectMetadata().getContentLength();
        }
        return 0;
    }

    @Override
    public InputStream openStream() {
        String path = getPath();
        if (StringUtils.isNotBlank(path)) {
            OSSObject oo = ossClient.getObject(conf.getBucket(), path);
            return oo.getObjectContent();
        }
        return null;
    }

    @Override
    public void write(InputStream stream) {
        write(stream, MimeUtils.find(FilenameUtils.getExt(getPath())));
    }

    @Override
    public void write(InputStream stream, Mime mime) {
        try {
            long length = stream.available();
            write(stream, length, mime);
        } catch (IOException e) {
            log.error(e.getMessage());
        }
    }

    @Override
    public void write(InputStream stream, long writeLength) {
        write(stream, writeLength, MimeUtils.find(FilenameUtils.getExt(getPath())));
    }

    @Override
    public void write(InputStream stream, long writeLength, Mime mime) {
        // 创建上传Object的Metadata
        ObjectMetadata meta = new ObjectMetadata();
        // 必须设置ContentLength
        meta.setContentLength(writeLength);
        meta.setContentType(mime.getMimeType());
        // 上传Object.
        // lazycathome, 2019.6.6
        // Ali OSS 不允许第一个字符为 / 或 \
        PutObjectResult result = ossClient.putObject(conf.getBucket(), path.replaceAll("^/+", ""), stream, meta);
    }

    @Override
    public boolean exists(String bucketName, String key) {
        return ossClient.doesObjectExist(bucketName, key);
    }

    @Override
    public void delete() {
    }
}

18 Source : AliFile.java
with Apache License 2.0
from tal-tech

/**
 * 静态工厂方法,简化调用关系
 * @param ossClient
 * @param conf
 * @param path
 * @param beLookup
 * @return
 */
public static StorageFile create(OSSClient ossClient, StorageConfig conf, String path, boolean beLookup) {
    return new AliFile(ossClient, conf, path, beLookup);
}

18 Source : AliyunOssApiClient.java
with Apache License 2.0
from shengdingbox

/**
 * @author 周子斐 ([email protected])
 * @version 1.0
 * @remark 2019年7月23日
 * @since 1.0
 */
@Slf4j
public clreplaced AliyunOssApiClient extends BaseApiClient {

    private OSSClient client;

    private String domainUrl;

    private String bucketName;

    private String endpoint;

    private String accessKey;

    private String secretKey;

    public AliyunOssApiClient() {
        super("阿里云OSS");
    }

    public AliyunOssApiClient init(String endpoint, String accessKey, String secretKey, String domainUrl, String bucketName, String uploadType) {
        this.domainUrl = domainUrl;
        this.bucketName = bucketName;
        this.endpoint = endpoint;
        this.accessKey = accessKey;
        this.secretKey = secretKey;
        super.folder = StringUtils.isEmpty(uploadType) ? "" : uploadType + "/";
        return this;
    }

    @Override
    public VirtualFile uploadFile(InputStream is, String imageUrl) {
        this.check();
        Date startTime = new Date();
        try (InputStream uploadIs = StreamUtil.clone(is);
            InputStream fileHashIs = StreamUtil.clone(is)) {
            if (!this.client.doesBucketExist(bucketName)) {
                throw new OssApiException("[阿里云OSS] 无法上传文件!Bucket不存在:" + bucketName);
            }
            boolean exists = this.client.doesObjectExist(bucketName, imageUrl);
            if (exists) {
                this.suffix = FileUtil.getSuffix(imageUrl);
                imageUrl = Randoms.alpha(16) + this.suffix;
            }
            this.createNewFileName(imageUrl);
            this.client.putObject(bucketName, this.newFileName, uploadIs);
            return new VirtualFile().setOriginalFileName(FileUtil.getName(imageUrl)).setSuffix(this.suffix).setUploadStartTime(startTime).setUploadEndTime(new Date()).setFilePath(this.newFileName).setFileHash(DigestUtils.md5DigestAsHex(fileHashIs)).setFullFilePath(this.domainUrl + this.newFileName);
        } catch (IOException e) {
            throw new OssApiException("[" + this.storageType + "]文件上传失败:" + e.getMessage());
        } finally {
            this.client.shutdown();
        }
    }

    /**
     * 删除文件
     *
     * @param fileName OSS中保存的文件名
     */
    @Override
    public boolean removeFile(String fileName) {
        this.check();
        if (StringUtils.isEmpty(fileName)) {
            throw new OssApiException("[" + this.storageType + "]删除文件失败:文件key为空");
        }
        try {
            boolean exists = this.client.doesBucketExist(bucketName);
            if (!exists) {
                throw new OssApiException("[阿里云OSS] 文件删除失败!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 文件删除失败!文件不存在:" + bucketName + "/" + fileName);
            }
            this.client.deleteObject(bucketName, fileName);
            return true;
        } catch (Exception e) {
            throw new OssApiException(e.getMessage());
        } finally {
            this.client.shutdown();
        }
    }

    @Override
    public VirtualFile multipartUpload(File file) {
        this.check();
        final Date startDate = new Date();
        if (!this.client.doesBucketExist(bucketName)) {
            throw new OssApiException("[阿里云OSS] 无法上传文件!Bucket不存在:" + bucketName);
        }
        String fileName = file.getName();
        boolean exists = this.client.doesObjectExist(bucketName, fileName);
        if (exists) {
            this.suffix = FileUtil.getSuffix(fileName);
            fileName = Randoms.alpha(16) + this.suffix;
        }
        this.createNewFileName(fileName);
        // 创建InitiateMultipartUploadRequest对象。
        InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, this.newFileName);
        // 初始化分片。
        InitiateMultipartUploadResult upresult = client.initiateMultipartUpload(request);
        // 返回uploadId,它是分片上传事件的唯一标识,您可以根据这个uploadId发起相关的操作,如取消分片上传、查询分片上传等。
        String uploadId = upresult.getUploadId();
        // partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
        List<PartETag> partETags = new ArrayList<PartETag>();
        // 计算文件有多少个分片。
        final long partSize = 5 * 1024 * 1024L;
        long fileLength = file.length();
        int partCount = (int) (fileLength / partSize);
        if (fileLength % partSize != 0) {
            partCount++;
        }
        progressListener.start(this.newFileName);
        // 遍历分片上传。
        for (int i = 0; i < partCount; i++) {
            long startPos = i * partSize;
            long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
            try (InputStream instream = new FileInputStream(file)) {
                // 跳过已经上传的分片。
                instream.skip(startPos);
                UploadPartRequest uploadPartRequest = new UploadPartRequest();
                uploadPartRequest.setBucketName(bucketName);
                uploadPartRequest.setKey(this.newFileName);
                uploadPartRequest.setUploadId(uploadId);
                uploadPartRequest.setInputStream(instream);
                // 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
                uploadPartRequest.setPartSize(curPartSize);
                // 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出这个范围,OSS将返回InvalidArgument的错误码。
                uploadPartRequest.setPartNumber(i + 1);
                // 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
                UploadPartResult uploadPartResult = client.uploadPart(uploadPartRequest);
                // 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
                partETags.add(uploadPartResult.getPartETag());
                progressListener.process(i, partCount);
            } catch (Exception e) {
                throw new OssApiException("[" + this.storageType + "]文件分片上传失败:" + e.getMessage());
            }
        }
        // 创建CompleteMultipartUploadRequest对象。
        // 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
        CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, this.newFileName, uploadId, partETags);
        // 如果需要在完成文件上传的同时设置文件访问权限,请参考以下示例代码。
        // completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.PublicRead);
        CompleteMultipartUploadResult completeMultipartUploadResult = client.completeMultipartUpload(completeMultipartUploadRequest);
        // 关闭OSSClient。
        client.shutdown();
        final VirtualFile virtualFile = new VirtualFile().setOriginalFileName(this.newFileName).setSuffix(suffix).setUploadStartTime(startDate).setUploadEndTime(new Date()).setFilePath(this.newFileName).setFileHash("").setFullFilePath(this.domainUrl + this.newFileName);
        progressListener.end(virtualFile);
        return virtualFile;
    }

    @Override
    protected void check() {
        if (StringUtils.isNullOrEmpty(accessKey) || StringUtils.isNullOrEmpty(secretKey) || StringUtils.isNullOrEmpty(bucketName)) {
            throw new QiniuApiException("[" + this.storageType + "]尚未配置阿里云,文件上传功能暂时不可用!");
        }
        this.client = new OSSClient(endpoint, accessKey, secretKey);
    }

    /**
     * 下载文件
     *
     * @param fileName OSS中保存的文件名
     */
    @Override
    public InputStream downloadFileStream(String fileName) {
        this.check();
        if (StringUtils.isEmpty(fileName)) {
            throw new OssApiException("[" + this.storageType + "]下载文件失败:文件key为空");
        }
        try {
            boolean exists = this.client.doesBucketExist(bucketName);
            if (!exists) {
                throw new OssApiException("[阿里云OSS] 文件删除失败!Bucket不存在:" + bucketName);
            }
            if (!this.client.doesObjectExist(bucketName, fileName)) {
                throw new OssApiException("[阿里云OSS] 文件下载失败!文件不存在:" + bucketName + "/" + fileName);
            }
            OSSObject object = this.client.getObject(bucketName, fileName);
            return object.getObjectContent();
        } finally {
            this.client.shutdown();
        }
    }
}

18 Source : AliOSSClient.java
with Apache License 2.0
from rule-engine

@Autowired(required = false)
public void setOssClient(OSSClient ossClient) {
    this.ossClient = ossClient;
}

18 Source : OSSUtil.java
with Apache License 2.0
from mose-x

/**
 * 根据key获取OSS服务器上的文件输入流
 * @param client OSS客户端
 * @param bucketName bucket名称
 * @param diskName 文件路径
 * @param key Bucket下的文件的路径名+文件名
 */
public static InputStream getInputStream(OSSClient client, String bucketName, String diskName, String key) {
    OSSObject ossObj = client.getObject(bucketName, diskName + key);
    return ossObj.getObjectContent();
}

18 Source : OSSUtil.java
with Apache License 2.0
from mose-x

/**
 * 新建Bucket  --Bucket权限:私有
 * @param bucketName bucket名称
 * @return true 新建Bucket成功
 */
public static boolean createBucket(OSSClient client, String bucketName) {
    Bucket bucket = client.createBucket(bucketName);
    return bucketName.equals(bucket.getName());
}

18 Source : AliyunOSSImpl.java
with Apache License 2.0
from MinsxCloud

public clreplaced AliyunOSSImpl implements CCSClient {

    private OSSClient ossClient;

    private AliyunOSSConfig aliyunOSSConfig;

    public AliyunOSSImpl(AliyunOSSConfig aliyunOSSConfig) {
        this.aliyunOSSConfig = aliyunOSSConfig;
        ClientConfiguration conf = new ClientConfiguration();
        conf.setSupportCname(aliyunOSSConfig.isSupportCname());
        this.ossClient = new OSSClient(aliyunOSSConfig.getEndPoint(), aliyunOSSConfig.getAccessKeyId(), aliyunOSSConfig.getAccessKeySecret(), conf);
    }

    @Override
    public void createBucket(String bucketName) {
        ossClient.createBucket(bucketName);
    }

    @Override
    public void deleteBucket(String bucketName) {
        ossClient.deleteBucket(bucketName);
    }

    @Override
    public Boolean doesBucketExist(String bucketName) {
        return ossClient.doesBucketExist(bucketName);
    }

    @Override
    public Boolean doesObjectExist(String bucketName, String ccsObjectPath) {
        return ossClient.doesObjectExist(bucketName, ccsObjectPath);
    }

    @Override
    public CCSObjectList listObjects(String bucketName, String ccsFolderPath) {
        return AliyunOSSParseUtil.parseToCCSObjectList(ossClient.listObjects(bucketName, ccsFolderPath));
    }

    @Override
    public CCSObject getObject(String bucketName, String ccsObjectPath) {
        return AliyunOSSParseUtil.parseToCCSObject(ossClient.getObject(bucketName, ccsObjectPath));
    }

    @Override
    public CCSObjectMetadata getObjectMetadata(String bucketName, String ccsObjectPath) {
        return AliyunOSSParseUtil.parseToCCSObjectMetadata(ossClient.getObjectMetadata(bucketName, ccsObjectPath));
    }

    @Override
    public void copyObject(String sourceBucketName, String sourceObjectPath, String destinationBucketName, String destinationObjectPath) {
        ossClient.copyObject(sourceBucketName, sourceObjectPath, destinationBucketName, destinationObjectPath);
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, String sourceFilePath) {
        PutObjectResult result = ossClient.putObject(bucketName, ccsObjectPath, new File(sourceFilePath));
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public void deleteObject(String bucketName, String ccsObjectPath) {
        ossClient.deleteObject(bucketName, ccsObjectPath);
    }

    @Override
    public void shutdown() {
        ossClient.shutdown();
    }

    public AliyunOSSConfig getAliyunOSSConfig() {
        return aliyunOSSConfig;
    }

    public void setAliyunOSSConfig(AliyunOSSConfig aliyunOSSConfig) {
        this.aliyunOSSConfig = aliyunOSSConfig;
    }

    @Override
    @SuppressWarnings("unchecked")
    public <T> T getNativeClient(Clreplaced<T> nativeClientClreplaced) throws NativeClientCastException {
        if (!nativeClientClreplaced.isInstance(OSSClient.clreplaced)) {
            throw new NativeClientCastException(ossClient.getClreplaced(), nativeClientClreplaced);
        }
        return (T) ossClient;
    }

    @Override
    public CCSObjectList listObjects(CCSPageObjectsRequestable pageable) {
        String nextMarker = null;
        CCSObjectList ccsObjectListing = null;
        ObjectListing objectListing = null;
        Integer pageIndex = 0;
        do {
            objectListing = ossClient.listObjects(new ListObjectsRequest(pageable.getBucketName()).withPrefix(pageable.getPrefix()).withMarker(nextMarker).withMaxKeys(pageable.getPageSize()));
            ccsObjectListing = AliyunOSSParseUtil.parseToCCSObjectList(objectListing);
            if (pageIndex == pageable.getPageIndex()) {
                break;
            }
            nextMarker = objectListing.getNextMarker();
            pageIndex++;
        } while (objectListing.isTruncated());
        return ccsObjectListing;
    }

    @Override
    public CCSObjectList listObjects(CCSListObjectsRequestable listObjectsRequestable) {
        ObjectListing objectListing = ossClient.listObjects(AliyunOSSParseUtil.parseToListObjectsRequest(listObjectsRequestable));
        return AliyunOSSParseUtil.parseToCCSObjectList(objectListing);
    }

    @Override
    public CCSObject getObject(CCSGetObjectRequestable objectRequestable) {
        return this.getObject(objectRequestable.getBucketName(), objectRequestable.getCcsObjectPath());
    }

    @Override
    public List<CCSBucket> listCCSBuckets() {
        List<CCSBucket> ccsBuckets = ossClient.listBuckets().stream().map(ossBucket -> AliyunOSSParseUtil.parseToCCSBucket(ossBucket)).collect(Collectors.toList());
        return ccsBuckets;
    }

    @Override
    public CCSPutObjectResponse putObject(CCSPutObjectRequestable putObjectRequestable) {
        PutObjectResult result = ossClient.putObject(AliyunOSSParseUtil.parseToPutObjectRequest(putObjectRequestable));
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, InputStream inputStream) {
        PutObjectResult result = ossClient.putObject(bucketName, ccsObjectPath, inputStream);
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, File sourceFile) {
        PutObjectResult result = ossClient.putObject(bucketName, ccsObjectPath, sourceFile);
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, File sourceFile, CCSObjectMetadata ccsObjectMetadata) {
        PutObjectResult result = ossClient.putObject(bucketName, ccsObjectPath, sourceFile, AliyunOSSParseUtil.parseToObjectMetadata(ccsObjectMetadata));
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, InputStream inputStream, CCSObjectMetadata ccsObjectMetadata) {
        PutObjectResult result = ossClient.putObject(bucketName, ccsObjectPath, inputStream, AliyunOSSParseUtil.parseToObjectMetadata(ccsObjectMetadata));
        return AliyunOSSParseUtil.parseToCCSPutObjectResponse(result);
    }

    @Override
    public CCSInitiateMultipartPutResponse initiateMultipartPut(CCSInitiateMultipartPutRequestable ccsInitiateMultipartPutRequestable) {
        InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(ccsInitiateMultipartPutRequestable.getBucketName(), ccsInitiateMultipartPutRequestable.getCcsObjectPath());
        InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(request);
        System.out.println(JSON.toJSONString(result));
        return new CCSInitiateMultipartPutResponse(result.getBucketName(), result.getKey(), result.getUploadId());
    }

    @Override
    public CCSPutPartResponse putPart(CCSPutPartRequest ccsPutObjectRequestable) {
        UploadPartRequest uploadPartRequest = new UploadPartRequest();
        uploadPartRequest.setBucketName(ccsPutObjectRequestable.getBucketName());
        uploadPartRequest.setKey(ccsPutObjectRequestable.getCcsObjectPath());
        uploadPartRequest.setUploadId(ccsPutObjectRequestable.getUploadId());
        uploadPartRequest.setInputStream(ccsPutObjectRequestable.getInputStream());
        uploadPartRequest.setPartSize(ccsPutObjectRequestable.getPartSize());
        uploadPartRequest.setPartNumber(ccsPutObjectRequestable.getPartNumber());
        UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
        return AliyunOSSParseUtil.parseToCCSPutPartResponse(uploadPartResult);
    }

    @Override
    public CCSCompleteMultipartPutResponse completeMultipartUpload(CCSCompleteMultipartPutRequestable ccsCompleteMultipartPutRequestable) {
        List<PartETag> partETags = ccsCompleteMultipartPutRequestable.getCCSPartETags().stream().map(ccsPartETag -> AliyunOSSParseUtil.parseToPartETag(ccsPartETag)).collect(Collectors.toList());
        CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(ccsCompleteMultipartPutRequestable.getBucketName(), ccsCompleteMultipartPutRequestable.getCcsObjectPath(), ccsCompleteMultipartPutRequestable.getUploadId(), partETags);
        CompleteMultipartUploadResult ossResponse = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
        return AliyunOSSParseUtil.parseToCCSCompleteMultipartPutResponse(ossResponse);
    }

    @Override
    public void createFolder(String bucketName, String folderName) {
        ossClient.putObject(bucketName, folderName + "/", new ByteArrayInputStream("".getBytes()));
    }

    @Override
    public void moveObject(String sourceBucketName, String sourceObjectPath, String destinationBucketName, String destinationObjectPath) {
        copyObject(sourceBucketName, sourceObjectPath, destinationBucketName, destinationObjectPath);
        try {
            deleteObject(sourceBucketName, sourceObjectPath);
        } catch (Exception e) {
            e.printStackTrace();
            CCSServiceException deleteSourceException = new CCSServiceException("delete source object error,try roll back the operation");
            Map<String, String> additionalDetails = new HashMap<>();
            additionalDetails.put("sourceBucketName", sourceBucketName);
            additionalDetails.put("sourceObjectPath", sourceObjectPath);
            additionalDetails.put("destinationBucketName", destinationBucketName);
            additionalDetails.put("destinationObjectPath", destinationObjectPath);
            deleteSourceException.setAdditionalDetails(additionalDetails);
            deleteObject(destinationBucketName, destinationObjectPath);
            throw deleteSourceException;
        }
    }

    @Override
    public CCSObjectMetadata downloadObject(String bucketName, String ccsObjectPath, File localFile) {
        CCSObject ccsObject = null;
        try {
            ccsObject = getObject(bucketName, ccsObjectPath);
            CCSObjectOperator.CCSObjectToFile(ccsObject, localFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ccsObject.getCcsObjectMetadata();
    }

    @Override
    public CCSPutObjectResponse putObject(String bucketName, String ccsObjectPath, byte[] bytes) {
        return putObject(bucketName, ccsObjectPath, IOUtil.bytesToByteArrayInputStream(bytes));
    }
}

18 Source : OSSFather.java
with MIT License
from konglingyinxia

/**
 * This sample demonstrates how to upload/download an object to/from
 * Aliyun OSS using the OSS SDK for Java.
 */
public clreplaced OSSFather {

    static Logger logger = LoggerFactory.getLogger(OSSFather.clreplaced);

    static String endpoint = CommonConfig.endpoint;

    static String accessKeyId = CommonConfig.accessKeyId;

    static String accessKeySecret = CommonConfig.accessKeySecret;

    public static String bucketName_user = CommonConfig.bucketName_user;

    /**
     * OSS的文件夹名
     */
    static String folder = CommonConfig.IMG_PATH;

    // 这里是你存放图片的文件夹名
    static String key = "";

    static String last = "?x-oss-process=image/resize,w_300,h_300/quality,q_100";

    static OSSClient ossClient;

    static ClientConfiguration conf;

    static {
        conf = new ClientConfiguration();
        conf.setConnectionTimeout(10000);
    }

    public static OSSClient getOSSClient() {
        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, conf);
        if (ossClient.doesBucketExist(bucketName_user)) {
            logger.debug("您已经创建Bucket:" + bucketName_user + "。");
        } else {
            logger.debug("您的Bucket不存在,创建Bucket:" + bucketName_user + "。");
            ossClient.createBucket(bucketName_user);
        }
        BucketInfo info = ossClient.getBucketInfo(bucketName_user);
        logger.debug("Bucket " + bucketName_user + "的信息如下:");
        logger.debug("\t数据中心:" + info.getBucket().getLocation());
        logger.debug("\t创建时间:" + info.getBucket().getCreationDate());
        logger.debug("\t用户标志:" + info.getBucket().getOwner());
        return ossClient;
    }

    public OSSFather() {
    }
}

18 Source : OSSUtil.java
with Apache License 2.0
from java110

/**
 * @return OSSClient oss客户端
 * @throws
 * @replacedle: getOSSClient
 * @Description: 获取oss客户端
 */
public static OSSClient getOSSClient() {
    String endpoint = MappingCache.getValue(DOMAIN, ENDPOINT);
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = MappingCache.getValue(DOMAIN, ACCESS_KEY_ID);
    String accessKeySecret = MappingCache.getValue(DOMAIN, ACCESS_KEY_SECRET);
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    return ossClient;
}

18 Source : OSSUtil.java
with Apache License 2.0
from java110

/**
 * @param ossClient  oss客户端
 * @param bucketName bucket名称
 * @param key        文件路径/名称,例如“test/a.txt”
 * @return void            返回类型
 * @throws
 * @replacedle: deleteFile
 * @Description: 根据key删除oss服务器上的文件
 */
public static void deleteFile(OSSClient ossClient, String bucketName, String key) {
    ossClient.deleteObject(bucketName, key);
}

18 Source : OssUploadTemplate.java
with Apache License 2.0
from java110

/*
     *文件下载工具方法
     */
public byte[] downFileByte(String remotePath, String fileName, String server, int port, String userName, String userPreplacedword) {
    byte[] return_arraybyte = null;
    OSSClient ossClient = null;
    ByteArrayOutputStream byteOut = null;
    InputStream ins = null;
    ByteArrayInputStream fis = null;
    try {
        ossClient = OSSUtil.getOSSClient();
        OSSUtil.getInputStreamByOSS(ossClient, "java110", remotePath + fileName);
        byteOut = new ByteArrayOutputStream();
        byte[] buf = new byte[2048];
        int bufsize = 0;
        while (ins != null && (bufsize = ins.read(buf, 0, buf.length)) != -1) {
            byteOut.write(buf, 0, bufsize);
        }
        fis = new ByteArrayInputStream(byteOut.toByteArray());
        byteOut.flush();
        byteOut.close();
        byte[] buffer = new byte[fis.available()];
        int offset = 0;
        int numRead = 0;
        while (offset < buffer.length && (numRead = fis.read(buffer, offset, buffer.length - offset)) >= 0) {
            offset += numRead;
        }
        if (offset != buffer.length) {
            throw new IOException("Could not completely read file ");
        }
        return_arraybyte = buffer;
    } catch (Exception e) {
        e.printStackTrace();
        logger.error("从ftp读取文件失败", e);
    } finally {
        if (byteOut != null) {
            try {
                byteOut.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (ins != null) {
            try {
                ins.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return return_arraybyte;
}

18 Source : OssBootUtil.java
with Apache License 2.0
from happy-panda

/**
 * @Description: 阿里云 oss 上传工具类(高依赖版)
 * @Date: 2019/5/10
 */
@Slf4j
public clreplaced OssBootUtil {

    private static String endPoint;

    private static String accessKeyId;

    private static String accessKeySecret;

    private static String bucketName;

    private static String staticDomain;

    public static void setEndPoint(String endPoint) {
        OssBootUtil.endPoint = endPoint;
    }

    public static void setAccessKeyId(String accessKeyId) {
        OssBootUtil.accessKeyId = accessKeyId;
    }

    public static void setAccessKeySecret(String accessKeySecret) {
        OssBootUtil.accessKeySecret = accessKeySecret;
    }

    public static void setBucketName(String bucketName) {
        OssBootUtil.bucketName = bucketName;
    }

    public static void setStaticDomain(String staticDomain) {
        OssBootUtil.staticDomain = staticDomain;
    }

    public static String getStaticDomain() {
        return staticDomain;
    }

    public static String getEndPoint() {
        return endPoint;
    }

    public static String getAccessKeyId() {
        return accessKeyId;
    }

    public static String getAccessKeySecret() {
        return accessKeySecret;
    }

    public static String getBucketName() {
        return bucketName;
    }

    public static OSSClient getOssClient() {
        return ossClient;
    }

    /**
     * oss 工具客户端
     */
    private static OSSClient ossClient = null;

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(MultipartFile file, String fileDir, String customBucket) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(customBucket)) {
            newBucket = customBucket;
        }
        try {
            // 判断桶是否存在,不存在则创建桶
            if (!ossClient.doesBucketExist(newBucket)) {
                ossClient.createBucket(newBucket);
            }
            // 获取文件名
            String orgName = file.getOriginalFilename();
            if ("" == orgName) {
                orgName = file.getName();
            }
            orgName = CommonUtils.getFileName(orgName);
            String fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            // update-begin-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
            fileDir = StrAttackFilter.filter(fileDir);
            // update-end-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
            // 设置权限(公开读)
            // ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 文件上传
     * @param file
     * @param fileDir
     * @return
     */
    public static String upload(MultipartFile file, String fileDir) {
        return upload(file, fileDir, null);
    }

    /**
     * 上传文件至阿里云 OSS
     * 文件上传成功,返回文件完整访问路径
     * 文件上传失败,返回 null
     *
     * @param file    待上传文件
     * @param fileDir 文件保存目录
     * @return oss 中的相对文件路径
     */
    public static String upload(FileItemStream file, String fileDir) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileDir = StrAttackFilter.filter(fileDir);
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url) {
        deleteUrl(url, null);
    }

    /**
     * 删除文件
     * @param url
     */
    public static void deleteUrl(String url, String bucket) {
        String newBucket = bucketName;
        if (oConvertUtils.isNotEmpty(bucket)) {
            newBucket = bucket;
        }
        String bucketUrl = "";
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            bucketUrl = staticDomain + "/";
        } else {
            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
        }
        url = url.replace(bucketUrl, "");
        ossClient.deleteObject(newBucket, url);
    }

    /**
     * 删除文件
     * @param fileName
     */
    public static void delete(String fileName) {
        ossClient.deleteObject(bucketName, fileName);
    }

    /**
     * 获取文件流
     * @param objectName
     * @param bucket
     * @return
     */
    public static InputStream getOssFile(String objectName, String bucket) {
        InputStream inputStream = null;
        try {
            String newBucket = bucketName;
            if (oConvertUtils.isNotEmpty(bucket)) {
                newBucket = bucket;
            }
            initOSS(endPoint, accessKeyId, accessKeySecret);
            OSSObject ossObject = ossClient.getObject(newBucket, objectName);
            inputStream = new BufferedInputStream(ossObject.getObjectContent());
        } catch (Exception e) {
            log.info("文件获取失败" + e.getMessage());
        }
        return inputStream;
    }

    /**
     * 获取文件流
     * @param objectName
     * @return
     */
    public static InputStream getOssFile(String objectName) {
        return getOssFile(objectName, null);
    }

    /**
     * 获取文件外链
     * @param bucketName
     * @param objectName
     * @param expires
     * @return
     */
    public static String getObjectURL(String bucketName, String objectName, Date expires) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        try {
            if (ossClient.doesObjectExist(bucketName, objectName)) {
                URL url = ossClient.generatePresignedUrl(bucketName, objectName, expires);
                return URLDecoder.decode(url.toString(), "UTF-8");
            }
        } catch (Exception e) {
            log.info("文件路径获取失败" + e.getMessage());
        }
        return null;
    }

    /**
     * 初始化 oss 客户端
     *
     * @return
     */
    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), new ClientConfiguration());
        }
        return ossClient;
    }

    /**
     * 上传文件到oss
     * @param stream
     * @param relativePath
     * @return
     */
    public static String upload(InputStream stream, String relativePath) {
        String FILE_URL = null;
        String fileUrl = relativePath;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            FILE_URL = staticDomain + "/" + relativePath;
        } else {
            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
        }
        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), stream);
        // 设置权限(公开读)
        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
        if (result != null) {
            log.info("------OSS文件上传成功------" + fileUrl);
        }
        return FILE_URL;
    }
}

18 Source : OSSUtil.java
with Apache License 2.0
from anylineorg

public clreplaced OSSUtil {

    private static final Logger log = LoggerFactory.getLogger(OSSUtil.clreplaced);

    private OSSClient client = null;

    private OSSConfig config = null;

    private static Hashtable<String, OSSUtil> instances = new Hashtable<String, OSSUtil>();

    public OSSUtil() {
    }

    public OSSUtil(String endpoint, String bucket, String account, String preplacedword) {
        OSSConfig config = new OSSConfig();
        config.ENDPOINT = endpoint;
        config.ACCESS_ID = account;
        config.ACCESS_SECRET = preplacedword;
        config.BUCKET = bucket;
        this.config = config;
        this.client = new OSSClient(config.ENDPOINT, config.ACCESS_ID, config.ACCESS_SECRET);
    }

    public static OSSUtil getInstance() {
        return getInstance("default");
    }

    public OSSClient getClient() {
        return client;
    }

    public void setClient(OSSClient client) {
        this.client = client;
    }

    public OSSConfig getConfig() {
        return config;
    }

    public void setConfig(OSSConfig config) {
        this.config = config;
    }

    @SuppressWarnings("deprecation")
    public static OSSUtil getInstance(String key) {
        if (BasicUtil.isEmpty(key)) {
            key = "default";
        }
        OSSUtil util = instances.get(key);
        if (null == util) {
            util = new OSSUtil();
            OSSConfig config = OSSConfig.getInstance(key);
            util.config = config;
            util.client = new OSSClient(config.ENDPOINT, config.ACCESS_ID, config.ACCESS_SECRET);
            // get_object_to_file
            instances.put(key, util);
        }
        return util;
    }

    /**
     * 上传文件或目录
     * @param file  file
     * @param path  path
     * @return return
     */
    public String upload(File file, String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        String result = null;
        if (null != file && file.exists() && file.isDirectory()) {
            List<File> files = FileUtil.getAllChildrenFile(file);
            for (File item : files) {
                String itemPath = FileUtil.mergePath(path, item.getAbsolutePath().replace(file.getAbsolutePath(), "")).replace("\\", "/");
                String url = upload(item, itemPath);
                if (null == result) {
                    result = url;
                } else {
                    result += "," + url;
                }
            }
        } else {
            result = createUrl(path);
            client.putObject(config.BUCKET, path, file);
            if (ConfigTable.isDebug() && log.isWarnEnabled()) {
                log.warn("[oss upload file][result:true][file:{}][url:{}]", file.getAbsolutePath(), result);
            }
        }
        return result;
    }

    public String upload(URL url, String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        try {
            client.putObject(config.BUCKET, path, url.openStream());
            if (ConfigTable.isDebug() && log.isWarnEnabled()) {
                log.warn("[oss upload file][result:true][file:{}]", path);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return createUrl(path);
    }

    public String upload(InputStream in, String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        client.putObject(config.BUCKET, path, in);
        if (ConfigTable.isDebug() && log.isWarnEnabled()) {
            log.warn("[oss upload file][result:true][file:{}]", path);
        }
        return createUrl(path);
    }

    public boolean download(File dir) {
        return download(dir, "");
    }

    /**
     * 文件列表
     * @param prefix  prefix
     * @return return
     */
    public List<String> list(String prefix) {
        List<String> list = new ArrayList<String>();
        if (null == prefix) {
            prefix = "";
        }
        if (prefix.startsWith("/")) {
            prefix = prefix.substring(1);
        }
        final int maxKeys = 200;
        String nextMarker = null;
        ObjectListing objectListing;
        do {
            objectListing = client.listObjects(new ListObjectsRequest(config.BUCKET).withPrefix(prefix).withMarker(nextMarker).withMaxKeys(maxKeys));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                String key = s.getKey();
                if (key.endsWith("/")) {
                    continue;
                }
                list.add(key);
            }
            nextMarker = objectListing.getNextMarker();
        } while (objectListing.isTruncated());
        return list;
    }

    public List<String> list() {
        return list("");
    }

    /**
     * 下载prefix目录下的所有文件到本地dir目录
     * @param dir  dir
     * @param prefix  prefix
     * @return return
     */
    public boolean download(File dir, String prefix) {
        if (null == prefix) {
            prefix = "";
        }
        if (prefix.startsWith("/")) {
            prefix = prefix.substring(1);
        }
        final int maxKeys = 200;
        String nextMarker = null;
        ObjectListing objectListing;
        do {
            objectListing = client.listObjects(new ListObjectsRequest(config.BUCKET).withPrefix(prefix).withMarker(nextMarker).withMaxKeys(maxKeys));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                String key = s.getKey();
                if (key.endsWith("/")) {
                    continue;
                }
                File file = new File(dir, key);
                File parent = file.getParentFile();
                if (null != parent && !parent.exists()) {
                    parent.mkdirs();
                }
                try {
                    client.getObject(new GetObjectRequest(config.BUCKET, key), file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if (ConfigTable.isDebug() && log.isWarnEnabled()) {
                    log.warn("[oss download file][local:{}][remote:{}]", file.getAbsolutePath(), key);
                }
            }
            nextMarker = objectListing.getNextMarker();
        } while (objectListing.isTruncated());
        return true;
    }

    /**
     * 文件是否存在
     * @param path  path
     * @return return
     */
    public boolean exists(String path) {
        boolean result = false;
        if (null == path) {
            path = "";
        }
        String key = key(path);
        try {
            result = client.doesObjectExist(config.BUCKET, key);
        } catch (Exception e) {
        }
        if (ConfigTable.isDebug() && log.isWarnEnabled()) {
            log.warn("[check exists][path:{}][key:{}]", path, key);
        }
        return result;
    }

    public boolean delete(String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        boolean result = false;
        try {
            String key = key(path);
            client.deleteObject(config.BUCKET, key);
            log.warn("[oss delete file][result:true][file:{}]", path);
            result = true;
        } catch (Exception e) {
            log.warn("[oss delete file][result:true][file:{}]", path);
            result = false;
        }
        return result;
    }

    public OSSObject get(String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        try {
            path = path.replace("http://" + config.BUCKET + "." + config.ENDPOINT + "/", "");
            return client.getObject(config.BUCKET, path);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 最后修改时间
     * @param path  path
     * @return return
     */
    public Date getLastModified(String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        try {
            path = path.replace("http://" + config.BUCKET + "." + config.ENDPOINT + "/", "");
            OSSObject obj = client.getObject(config.BUCKET, path);
            if (null == obj) {
                return null;
            } else {
                return obj.getObjectMetadata().getLastModified();
            }
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 最后修改时间
     * @param path  path
     * @param format 日期格式
     * @return return
     */
    public String getLastModified(String path, String format) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        Date date = getLastModified(path);
        if (null == date) {
            return "";
        }
        return DateUtil.format(date, format);
    }

    /**
     * 是否过期
     * @param path  path
     * @param millisecond  millisecond
     * @return return
     */
    public boolean isExpire(String path, long millisecond) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        Date date = getLastModified(path);
        if (null == date) {
            return false;
        }
        return DateUtil.diff(DateUtil.DATE_PART_MILLISECOND, date) > millisecond;
    }

    /**
     * 创建完整url
     * @param path  path
     * @return return
     */
    private String createUrl(String path) {
        if (null == path) {
            path = "";
        }
        if (path.startsWith("/")) {
            path = path.substring(1);
        }
        String result = "";
        result = "http://" + config.BUCKET + "." + config.ENDPOINT;
        result = HttpUtil.mergePath(result, path);
        return result;
    }

    public Map<String, String> signature(String dir) {
        return signature(dir, config.EXPIRE_SECOND);
    }

    public Map<String, String> signature(String dir, int second) {
        if (second == 0) {
            second = config.EXPIRE_SECOND;
        }
        String host = "";
        if (config.BUCKET.startsWith("http")) {
            host = config.BUCKET + "." + config.ENDPOINT;
        } else {
            host = "https://" + config.BUCKET + "." + config.ENDPOINT;
        }
        Map<String, String> result = new HashMap<String, String>();
        try {
            String postPolicy = policy(dir, second);
            byte[] binaryData = postPolicy.getBytes("utf-8");
            String encodedPolicy = BinaryUtil.toBase64String(binaryData);
            String postSignature = client.calculatePostSignature(postPolicy);
            result.put("accessid", config.ACCESS_ID);
            result.put("policy", encodedPolicy);
            result.put("signature", postSignature);
            result.put("dir", dir);
            result.put("host", host);
            result.put("expire", String.valueOf((System.currentTimeMillis() + second * 1000) / 1000));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    public String policy(String dir, long second) {
        String result = null;
        PolicyConditions policyConds = new PolicyConditions();
        policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
        policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
        long expireEndTime = System.currentTimeMillis() + second * 1000;
        Date expiration = new Date(expireEndTime);
        result = client.generatePostPolicy(expiration, policyConds);
        return result;
    }

    public String key(String key) {
        if (null != key) {
            if (key.contains(config.ENDPOINT)) {
                key = key.substring(key.indexOf(config.ENDPOINT) + config.ENDPOINT.length() + 1);
            }
        }
        return key;
    }
}

18 Source : AliyunOSSClientUtil.java
with Apache License 2.0
from airufei

public static void close(OSSClient ossClient) {
    if (ossClient != null) {
        try {
            ossClient.shutdown();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

18 Source : AliyunOSSClientUtil.java
with Apache License 2.0
from airufei

/**
 * 创建存储空间
 *
 * @param ossClient  OSS连接
 * @param bucketName 存储空间
 * @return
 */
public static String createBucketName(OSSClient ossClient, String bucketName) {
    // 存储空间
    final String bucketNames = bucketName;
    if (!ossClient.doesBucketExist(bucketName)) {
        // 创建存储空间
        Bucket bucket = ossClient.createBucket(bucketName);
        logger.info("创建存储空间成功");
        return bucket.getName();
    }
    return bucketNames;
}

17 Source : AliOssServiceImpl.java
with Apache License 2.0
from virjar

/**
 * @author virjar
 * @since 2020-10-29
 */
@Service
@Slf4j
public clreplaced AliOssServiceImpl extends IOssService implements Closeable {

    @Override
    public void uploadFile(String ossRelativePath, File theUploadFile) {
        if (check()) {
            ossClient.putObject(RootConfig.ALIOss.bucket, ossRelativePath, theUploadFile);
        }
    }

    @Override
    public void downloadFile(String pathOrURL, File theDownloadFile) {
        if (!check()) {
            return;
        }
        ossClient.getObject(new GetObjectRequest(RootConfig.ALIOss.bucket, trimURLToPath(pathOrURL)), theDownloadFile);
    }

    @Override
    public String genPublicAccessURL(String ossRelativePath) {
        if (!check()) {
            return null;
        }
        ossRelativePath = trimURLToPath(ossRelativePath);
        AccessControlList bucketAcl = ossClient.getBucketAcl(RootConfig.ALIOss.bucket);
        if (CannedAccessControlList.PublicRead == bucketAcl.getCannedACL()) {
            String url = ossClient.getEndpoint().toString();
            if (!url.endsWith("/")) {
                url += "/";
            }
            String resourcePath = OSSUtils.determineResourcePath(RootConfig.ALIOss.bucket, ossRelativePath, ossClient.getClientConfiguration().isSLDEnabled());
            url += resourcePath;
            return url;
        }
        return ossClient.generatePresignedUrl(RootConfig.ALIOss.bucket, ossRelativePath, new Date(new Date().getTime() + 1000 * 60 * 60 * 8)).toString();
    }

    @Override
    boolean work() {
        try {
            configureOssClient();
        } catch (Throwable ignore) {
        }
        return ossClient != null;
    }

    @Override
    String getBucket() {
        return RootConfig.ALIOss.bucket;
    }

    private boolean check() {
        if (ossClient == null) {
            log.error("the aliOssService can not work");
        }
        return ossClient != null;
    }

    private void configureOssClient() {
        OSSClient ossClient = new OSSClient(RootConfig.ALIOss.endpoint, RootConfig.ALIOss.accessKeyId, RootConfig.ALIOss.accessKeySecret);
        if (ossClient.doesBucketExist(RootConfig.ALIOss.bucket)) {
            this.ossClient = ossClient;
        } else {
            log.warn("the bucket:{} not exist", RootConfig.ALIOss.bucket);
        }
    }

    private OSSClient ossClient = null;

    @Override
    public void close() {
        if (ossClient != null) {
            ossClient.shutdown();
        }
    }
}

17 Source : OssKeyLoader.java
with Apache License 2.0
from TheBund1st

@RequiredArgsConstructor
public clreplaced OssKeyLoader implements KeyBytesLoader {

    private final OSSClient ossClient;

    @Setter
    private String bucketName = "keepitsecret";

    @Setter
    private String objectName = "sms-verification-private.der";

    @Override
    @SneakyThrows
    public byte[] getBytes() {
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
        return StreamUtils.copyToByteArray(ossObject.getObjectContent());
    }
}

17 Source : AliyunOSSConfig.java
with Apache License 2.0
from open-capacity-platform

/**
 * 阿里云文件存储client
 * 只有配置了aliyun.oss.access-key才可以使用
 */
@Bean
@ConditionalOnProperty(name = "aliyun.oss.access-key", matchIfMissing = true)
public OSSClient ossClient() {
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    return ossClient;
}

17 Source : OSSUtil.java
with Apache License 2.0
from mose-x

/**
 * 删除Bucket
 * @param bucketName bucket名称
 */
public static void deleteBucket(OSSClient client, String bucketName) {
    client.deleteBucket(bucketName);
    System.out.println("删除Bucket成功:" + bucketName);
// logger.info("删除" + bucketName + "Bucket成功");
}

17 Source : AliOssUtils.java
with MIT License
from leslie1015

public static void deleteFile(String fileName) {
    OSSClient ossClient = getOSSClient();
    try {
        ossClient.deleteObject(AliyunOssConfig.getDefaultBucketName(), fileName);
    } catch (Exception e) {
    } finally {
    // ossClient.shutdown();
    }
}

17 Source : OSSUtil.java
with Apache License 2.0
from java110

/**
 * @param ossClient   oss客户端
 * @param inputStream 输入流
 * @param bucketName  bucket名称
 * @param objectName  上传文件目录和(包括文件名) 例如“test/a.jpg”
 * @return void        返回类型
 * @throws
 * @replacedle: uploadByInputStream
 * @Description: 通过输入流上传文件
 */
public static void uploadByInputStream(OSSClient ossClient, InputStream inputStream, String bucketName, String objectName) {
    try {
        ossClient.putObject(bucketName, objectName, inputStream);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (ossClient != null) {
            ossClient.shutdown();
        }
    }
}

See More Examples