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.OSS;
|
||||||
import com.aliyun.oss.OSSClientBuilder;
|
import com.aliyun.oss.OSSClientBuilder;
|
||||||
import com.aliyun.oss.OSSException;
|
import com.aliyun.oss.OSSException;
|
||||||
|
import com.aliyun.oss.model.CannedAccessControlList;
|
||||||
import com.aliyun.oss.model.DeleteObjectsRequest;
|
import com.aliyun.oss.model.DeleteObjectsRequest;
|
||||||
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
||||||
import com.aliyun.oss.model.ListObjectsV2Request;
|
import com.aliyun.oss.model.ListObjectsV2Request;
|
||||||
import com.aliyun.oss.model.ListObjectsV2Result;
|
import com.aliyun.oss.model.ListObjectsV2Result;
|
||||||
import com.aliyun.oss.model.OSSObjectSummary;
|
import com.aliyun.oss.model.OSSObjectSummary;
|
||||||
import com.aliyun.oss.model.PutObjectRequest;
|
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.AliOssStorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
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.StorageConfigException;
|
||||||
import com.ycwl.basic.storage.exceptions.StorageException;
|
import com.ycwl.basic.storage.exceptions.StorageException;
|
||||||
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
||||||
@ -68,11 +71,13 @@ final public class AliOssAdapter extends AStorageAdapter {
|
|||||||
String fullPath = buildPath(path);
|
String fullPath = buildPath(path);
|
||||||
OSS ossClient = getOssClient();
|
OSS ossClient = getOssClient();
|
||||||
try {
|
try {
|
||||||
|
ObjectMetadata metadata = new ObjectMetadata();
|
||||||
|
metadata.setContentLength(inputStream.available());
|
||||||
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream);
|
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream);
|
||||||
ossClient.putObject(putObjectRequest);
|
ossClient.putObject(putObjectRequest);
|
||||||
return getUrl(path);
|
return getUrl(path);
|
||||||
} catch (ClientException e) {
|
} catch (Exception e) {
|
||||||
throw new UploadFileFailedException("上传文件失败:" + e.getErrorMessage());
|
throw new UploadFileFailedException("上传文件失败:" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,6 +179,32 @@ final public class AliOssAdapter extends AStorageAdapter {
|
|||||||
return true;
|
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() {
|
private OSS getOssClient() {
|
||||||
OSS ossClient = new OSSClientBuilder().build(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
|
OSS ossClient = new OSSClientBuilder().build(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
|
||||||
return ossClient;
|
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.AwsOssStorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageConfig;
|
import com.ycwl.basic.storage.entity.StorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
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.StorageConfigException;
|
||||||
import com.ycwl.basic.storage.exceptions.StorageException;
|
import com.ycwl.basic.storage.exceptions.StorageException;
|
||||||
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
|
||||||
@ -65,7 +66,10 @@ public class AwsOssAdapter extends AStorageAdapter {
|
|||||||
AmazonS3 s3Client = getS3Client();
|
AmazonS3 s3Client = getS3Client();
|
||||||
try {
|
try {
|
||||||
ObjectMetadata metadata = new ObjectMetadata();
|
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);
|
return getUrl(path);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new UploadFileFailedException("上传文件失败:" + e.getMessage());
|
throw new UploadFileFailedException("上传文件失败:" + e.getMessage());
|
||||||
@ -171,6 +175,32 @@ public class AwsOssAdapter extends AStorageAdapter {
|
|||||||
return true;
|
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() {
|
private AmazonS3Client getS3Client() {
|
||||||
BasicAWSCredentials basicAwsCred = new BasicAWSCredentials(config.getAccessKeyId(), config.getAccessKeySecret());
|
BasicAWSCredentials basicAwsCred = new BasicAWSCredentials(config.getAccessKeyId(), config.getAccessKeySecret());
|
||||||
ClientConfiguration clientConfiguration = new ClientConfiguration();
|
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.StorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||||
|
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -24,4 +25,5 @@ public interface IStorageAdapter {
|
|||||||
String getUrlForUpload(Date expireDate, String contentType, String... path);
|
String getUrlForUpload(Date expireDate, String contentType, String... path);
|
||||||
List<StorageFileObject> listDir(String ...path);
|
List<StorageFileObject> listDir(String ...path);
|
||||||
boolean deleteDir(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.StorageConfig;
|
||||||
import com.ycwl.basic.storage.entity.StorageFileObject;
|
import com.ycwl.basic.storage.entity.StorageFileObject;
|
||||||
|
import com.ycwl.basic.storage.enums.StorageAcl;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -54,4 +55,9 @@ public class LocalStorageAdapter extends AStorageAdapter{
|
|||||||
public boolean deleteDir(String... path) {
|
public boolean deleteDir(String... path) {
|
||||||
return false;
|
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