下载传接口:objectName与fileUrl一样
public String download(String objectName) {
String endpoint = ossProperties.getEndPoint();
String accessKeyId = ossProperties.getAccessKeyId();
String accessKeySecret = ossProperties.getAccessKeySecret();
String bucketName = ossProperties.getBucketName();
// 从STS服务获取临时访问凭证后,您可以通过临时访问密钥和安全令牌生成OSSClient(既这里的accessKeyId和accessKeySecret为STS服务返回的)。
// 使用STS创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置请求头。
Map<String, String> headers = new HashMap<String, String>();
// 设置用户自定义元信息。
Map<String, String> userMetadata = new HashMap<String, String>();
URL signedUrl = null;
try {
// 指定生成的签名URL过期时间,单位为毫秒。
Date expiration = new Date(new Date().getTime() + 3600 * 1000);
// 生成签名URL。
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
// 设置过期时间。
request.setExpiration(expiration);
// 将请求头加入到request中。
request.setHeaders(headers);
// 添加用户自定义元信息。
request.setUserMetadata(userMetadata);
// 通过HTTP GET请求生成签名URL。
signedUrl = ossClient.generatePresignedUrl(request);
// 打印签名URL。
System.out.println("signed url for putObject: " + signedUrl);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
}
assert signedUrl != null;
return signedUrl.toString();
// 通过签名URL下载文件,以HttpClients为例说明。
// getObjectWithHttp(signedUrl, pathName, headers, userMetadata);
}
上传接口
//简单的文件上传测试
//文件上传接口需要的参数是被上传文件的本地绝对地址
//文件上传返回值应该是在bucket中的位置信息。
public String upload(MultipartFile multipartFile, String fileUrl) {
String endpoint = ossProperties.getEndPoint();
String accessKeyId = ossProperties.getAccessKeyId();
String accessKeySecret = ossProperties.getAccessKeySecret();
String bucketName = ossProperties.getBucketName();
String fileName = multipartFile.getOriginalFilename();
//创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
//容器不存在,就创建,权限为私有的
if (!ossClient.doesBucketExist(bucketName)) {
ossClient.createBucket(bucketName);
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
createBucketRequest.setCannedACL(CannedAccessControlList.Private);
ossClient.createBucket(createBucketRequest);
}
//上传时设置存储类型和访问权限
ObjectMetadata objectMetadata = new ObjectMetadata();
String type = getContentType(fileName.substring(fileName.lastIndexOf('.')));
// String fileUrl = "";
objectMetadata.setContentType(type);
objectMetadata.setObjectAcl(CannedAccessControlList.Default);
//上传文件,附带有桶、文件地址、文件、文件存储属性,
PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, multipartFile.getInputStream(), objectMetadata));
System.out.println(result.toString());
if (result != null) {
System.out.println(("==========>OSS文件上传成功,OSS地址:" + fileUrl));
}
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return fileUrl;
}