aliyunoss常用api接口

创建OSSClient

OSSClientBuilder builder = new OSSClientBuilder();
OSS ossClient = builder.build(endpoint, accessKeyId, accessKeySecret);
String endpoint = "<yourEndpoint>";
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 判断Bucket是否存在。
boolean exists = ossClient.doesBucketExist(bucketName);
if (!exists) {
    // 如果Bucket不存在则创建。
    ossClient.createBucket(bucketName);
}

System.out.println("OSS连接成功!");

创建Bucket

ossClient.createBucket(bucketName);

删除Bucket

ossClient.deleteBucket(bucketName);

判断Bucket是否存在

boolean exists = ossClient.doesBucketExist(bucketName);

设置Bucket访问权限

ossClient.setBucketAcl(bucketName, CannedAccessControlList.Private);

获取Bucket访问权限

AccessControlList acl = ossClient.getBucketAcl(bucketName);

设置Bucket的生命周期规则

LifecycleRule rule = new LifecycleRule("ruleId", "prefix", LifecycleRule.RuleStatus.Enabled, 30);
List<LifecycleRule> rules = new ArrayList<LifecycleRule>();
rules.add(rule);
ossClient.setBucketLifecycle(bucketName, rules);

获取Bucket的生命周期规则

String bucketName = "<yourBucketName>";
List<LifecycleRule> lifecycleRules = new ArrayList<>();
LifecycleRule lifecycleRule = new LifecycleRule();
lifecycleRule.setId("delete expired files");
lifecycleRule.setPrefix("prefix/");
lifecycleRule.setStatus(LifecycleRule.RuleStatus.Enabled);
lifecycleRule.setExpirationDays(30);
lifecycleRules.add(lifecycleRule);
ossClient.setBucketLifecycle(bucketName, lifecycleRules);

设置Bucket的跨域规则

BucketCrossOriginConfiguration configuration = new BucketCrossOriginConfiguration();
configuration.addRule(new BucketCrossOriginConfiguration.Rule().addAllowedOrigin("*").addAllowedMethod(HttpMethod.GET).setMaxAgeSeconds(100));
ossClient.setBucketCrossOriginConfiguration(bucketName, configuration);

获取Bucket的跨域规则

BucketCrossOriginConfiguration configuration = ossClient.getBucketCrossOriginConfiguration(bucketName);

设置 Bucket CORS 规则

String bucketName = "<yourBucketName>";
List<CORSRule> corsRules = new ArrayList<>();
CORSRule corsRule = new CORSRule();
corsRule.setAllowedOrigins(Arrays.asList("*"));
corsRule.setAllowedMethods(Arrays.asList(HttpMethod.GET, HttpMethod.PUT, HttpMethod.POST));
corsRule.setAllowedHeaders(Arrays.asList("*"));
corsRules.add(corsRule);
ossClient.setBucketCORSRules(bucketName, corsRules);

设置 Bucket 防盗链规则

String bucketName = "<yourBucketName>";
List<Referer> referers = new ArrayList<>();
referers.add(new Referer("*"));
RefererConfiguration refererConfiguration = new RefererConfiguration();
refererConfiguration.setAllowEmptyReferer(true);
refererConfiguration.setRefererList(referers);
ossClient.setBucketReferer(bucketName, refererConfiguration);

上传文件

ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()));

上传文件并设置元数据

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(content.length());
ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()), metadata);

上传文件并设置ACL

PutObjectRequest request = new PutObjectRequest(bucketName, key, new ByteArrayInputStream(content.getBytes()));
request.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.putObject(request);

获取文件

OSSObject object = ossClient.getObject(bucketName, key);

下载文件

String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();
// 处理 inputStream
ossObject.close();

获取文件元数据

ObjectMetadata metadata = ossClient.getObjectMetadata(bucketName, key);

下载文件

OSSObject object = ossClient.getObject(bucketName, key);
InputStream inputStream = object.getObjectContent();
byte[] bytes = IOUtils.toByteArray(inputStream);

删除文件

ossClient.deleteObject(bucketName, key);

批量删除文件

List<String> keys = new ArrayList<String>();
keys.add("key1");
keys.add("key2");
DeleteObjectsRequest request = new DeleteObjectsRequest(bucketName).withKeys(keys);
ossClient.deleteObjects(request);

列举Bucket下的所有文件

方法一

ListObjectsRequest request = new ListObjectsRequest(bucketName);
ObjectListing listing = ossClient.listObjects(request);
while (true) {
    List<OSSObjectSummary> summaries = listing.getObjectSummaries();
    for (OSSObjectSummary summary : summaries) {
        System.out.println(summary.getKey());
    }
    if (listing.isTruncated()) {
        listing = ossClient.listNextBatchOfObjects(listing);
    } else {
        break;
    }
}

方法二

String bucketName = "yourBucketName";
List<OSSObjectSummary> objects = ossClient.listObjects(bucketName).getObjectSummaries();
for (OSSObjectSummary object : objects) {
    System.out.println(object.getKey());
}

列举Bucket中的文件夹

String bucketName = "yourBucketName";
String prefix = "yourPrefix";
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(prefix).withDelimiter("/"));
List<String> commonPrefixes = objectListing.getCommonPrefixes();
for (String commonPrefix : commonPrefixes) {
    System.out.println(commonPrefix);
}

分块上传

String bucketName = "<bucketName>";
String objectName = "<objectName>";
File file = new File("<filePath>");

// 初始化分块上传
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(request);

// 上传分块
long partSize = 1024 * 1024L; // 1MB
long fileLength = file.length();
int partCount = (int) (fileLength / partSize) + ((fileLength % partSize > 0) ? 1 : 0);
List<PartETag> partETags = new ArrayList<PartETag>();

for (int i = 0; i < partCount; i++) {
    long startPos = i * partSize;
    long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
    FileInputStream inputStream = new FileInputStream(file);
    inputStream.skip(startPos);

    UploadPartRequest uploadPartRequest = new UploadPartRequest();
    uploadPartRequest.setBucketName(bucketName);
    uploadPartRequest.setKey(objectName);
    uploadPartRequest.setUploadId(result.getUploadId());
    uploadPartRequest.setInputStream(inputStream);
    uploadPartRequest.setPartSize(curPartSize);
    uploadPartRequest.setPartNumber(i + 1);

    UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
    partETags.add(uploadPartResult.getPartETag());
}

// 完成分块上传
CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(bucketName, objectName, result.getUploadId(), partETags);
ossClient.completeMultipartUpload(completeRequest);

拷贝文件

String sourceBucketName = "yourSourceBucketName";
String sourceObjectName = "yourSourceObjectName";
String destinationBucketName = "yourDestinationBucketName";
String destinationObjectName = "yourDestinationObjectName";
ossClient.copyObject(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName);

获取文件的url

String bucketName = "your-bucket-name";
String objectName = "your-object-name";
Date expiration = new Date(new Date().getTime() + 3600 * 1000); // 设置URL过期时间为1小时
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
System.out.println(url.toString());

移动文件

String sourceBucketName = "your-source-bucket-name";
String sourceObjectName = "your-source-object-name";
String destinationBucketName = "your-destination-bucket-name";
String destinationObjectName = "your-destination-object-name";
ossClient.copyObject(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName);
ossClient.deleteObject(sourceBucketName, sourceObjectName);//比复制文件多了一步删除

上传大文件

String bucketName = "your-bucket-name";
String objectName = "your-object-name";
String uploadFile = "your-upload-file";
String checkpointFile = "your-checkpoint-file";
ossClient.uploadFile(bucketName, objectName, uploadFile, checkpointFile);

判断文件是否存在

String bucketName = "your-bucket-name";
String objectName = "your-object-name";
boolean exists = ossClient.doesObjectExist(bucketName, objectName);
System.out.println(exists);

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值