storage acl添加,添加contentLength
This commit is contained in:
parent
5494352fb0
commit
94bf358a2d
@ -6,15 +6,18 @@ import com.aliyun.oss.HttpMethod;
|
||||
import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.OSSException;
|
||||
import com.aliyun.oss.model.CannedAccessControlList;
|
||||
import com.aliyun.oss.model.DeleteObjectsRequest;
|
||||
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
||||
import com.aliyun.oss.model.ListObjectsV2Request;
|
||||
import com.aliyun.oss.model.ListObjectsV2Result;
|
||||
import com.aliyun.oss.model.OSSObjectSummary;
|
||||
import com.aliyun.oss.model.PutObjectRequest;
|
||||
import com.amazonaws.services.s3.model.ObjectMetadata;
|
||||
import com.ycwl.basic.storage.entity.AliOssStorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||
import com.ycwl.basic.storage.exceptions.StorageConfigException;
|
||||
import com.ycwl.basic.storage.exceptions.StorageException;
|
||||
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
||||
@ -68,11 +71,13 @@ final public class AliOssAdapter extends AStorageAdapter {
|
||||
String fullPath = buildPath(path);
|
||||
OSS ossClient = getOssClient();
|
||||
try {
|
||||
ObjectMetadata metadata = new ObjectMetadata();
|
||||
metadata.setContentLength(inputStream.available());
|
||||
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream);
|
||||
ossClient.putObject(putObjectRequest);
|
||||
return getUrl(path);
|
||||
} catch (ClientException e) {
|
||||
throw new UploadFileFailedException("上传文件失败:" + e.getErrorMessage());
|
||||
} catch (Exception e) {
|
||||
throw new UploadFileFailedException("上传文件失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,6 +179,32 @@ final public class AliOssAdapter extends AStorageAdapter {
|
||||
return true;
|
||||
}
|
||||
|
||||
private CannedAccessControlList convertAcl(StorageAcl acl) {
|
||||
switch (acl) {
|
||||
case PUBLIC_READ:
|
||||
return CannedAccessControlList.PublicRead;
|
||||
case PUBLIC_READ_WRITE:
|
||||
return CannedAccessControlList.PublicReadWrite;
|
||||
case PRIVATE:
|
||||
return CannedAccessControlList.Private;
|
||||
case AUTHENTICATED_READ:
|
||||
return CannedAccessControlList.AuthenticatedRead;
|
||||
default:
|
||||
return CannedAccessControlList.Default;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setAcl(StorageAcl acl, String... path) {
|
||||
OSS ossClient = getOssClient();
|
||||
try {
|
||||
ossClient.setObjectAcl(config.getBucketName(), buildPath(path), convertAcl(acl));
|
||||
return true;
|
||||
} catch (OSSException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private OSS getOssClient() {
|
||||
OSS ossClient = new OSSClientBuilder().build(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
|
||||
return ossClient;
|
||||
|
@ -12,6 +12,7 @@ import com.amazonaws.services.s3.model.*;
|
||||
import com.ycwl.basic.storage.entity.AwsOssStorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||
import com.ycwl.basic.storage.exceptions.StorageConfigException;
|
||||
import com.ycwl.basic.storage.exceptions.StorageException;
|
||||
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
||||
@ -65,7 +66,10 @@ public class AwsOssAdapter extends AStorageAdapter {
|
||||
AmazonS3 s3Client = getS3Client();
|
||||
try {
|
||||
ObjectMetadata metadata = new ObjectMetadata();
|
||||
s3Client.putObject(new PutObjectRequest(config.getBucketName(), fullPath, inputStream, metadata));
|
||||
metadata.setContentLength(inputStream.available());
|
||||
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream, metadata);
|
||||
putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead); // 设置访问权限,让所有用户都允许访问
|
||||
s3Client.putObject(putObjectRequest);
|
||||
return getUrl(path);
|
||||
} catch (Exception e) {
|
||||
throw new UploadFileFailedException("上传文件失败:" + e.getMessage());
|
||||
@ -171,6 +175,32 @@ public class AwsOssAdapter extends AStorageAdapter {
|
||||
return true;
|
||||
}
|
||||
|
||||
private CannedAccessControlList convertAcl(StorageAcl acl) {
|
||||
switch (acl) {
|
||||
case PUBLIC_READ:
|
||||
return CannedAccessControlList.PublicRead;
|
||||
case PUBLIC_READ_WRITE:
|
||||
return CannedAccessControlList.PublicReadWrite;
|
||||
case PRIVATE:
|
||||
return CannedAccessControlList.Private;
|
||||
case AUTHENTICATED_READ:
|
||||
return CannedAccessControlList.AuthenticatedRead;
|
||||
default:
|
||||
return CannedAccessControlList.PublicRead;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setAcl(StorageAcl acl, String... path) {
|
||||
AmazonS3 s3Client = getS3Client();
|
||||
try {
|
||||
s3Client.setObjectAcl(config.getBucketName(), buildPath(path), convertAcl(acl));
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private AmazonS3Client getS3Client() {
|
||||
BasicAWSCredentials basicAwsCred = new BasicAWSCredentials(config.getAccessKeyId(), config.getAccessKeySecret());
|
||||
ClientConfiguration clientConfiguration = new ClientConfiguration();
|
||||
|
@ -2,6 +2,7 @@ package com.ycwl.basic.storage.adapters;
|
||||
|
||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
@ -24,4 +25,5 @@ public interface IStorageAdapter {
|
||||
String getUrlForUpload(Date expireDate, String contentType, String... path);
|
||||
List<StorageFileObject> listDir(String ...path);
|
||||
boolean deleteDir(String ...path);
|
||||
boolean setAcl(StorageAcl acl, String ...path);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.ycwl.basic.storage.adapters;
|
||||
|
||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Collections;
|
||||
@ -54,4 +55,9 @@ public class LocalStorageAdapter extends AStorageAdapter{
|
||||
public boolean deleteDir(String... path) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setAcl(StorageAcl acl, String... path) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
18
src/main/java/com/ycwl/basic/storage/enums/StorageAcl.java
Normal file
18
src/main/java/com/ycwl/basic/storage/enums/StorageAcl.java
Normal file
@ -0,0 +1,18 @@
|
||||
package com.ycwl.basic.storage.enums;
|
||||
|
||||
public enum StorageAcl {
|
||||
PUBLIC_READ("public-read"),
|
||||
PRIVATE("private"),
|
||||
PUBLIC_READ_WRITE("public-read-write"),
|
||||
AUTHENTICATED_READ("authenticated-read");
|
||||
|
||||
private final String value;
|
||||
|
||||
StorageAcl(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user