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
19
Source : AliyunCloudStorageService.java
with GNU Affero General Public License v3.0
from zhouhuan751312
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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