package com.doumee.core.utils.tyyun;
|
|
import com.amazonaws.ClientConfiguration;
|
import com.amazonaws.Protocol;
|
import com.amazonaws.auth.AWSCredentials;
|
import com.amazonaws.auth.AWSStaticCredentialsProvider;
|
import com.amazonaws.auth.BasicAWSCredentials;
|
import com.amazonaws.client.builder.AwsClientBuilder;
|
import com.amazonaws.services.s3.AmazonS3;
|
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
|
import com.amazonaws.services.s3.model.*;
|
import com.doumee.core.utils.FileDigest;
|
|
import java.io.*;
|
import java.net.URL;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.web.multipart.MultipartFile;
|
|
@Slf4j
|
public class TyyZosUtil {
|
private AmazonS3 client;
|
|
// public static final String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
|
|
public TyyZosUtil(String END_POINT, String ACCESS_KEY, String SECRET_KEY) {
|
try {
|
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,SECRET_KEY);
|
ClientConfiguration awsClientConfig = new ClientConfiguration();
|
awsClientConfig.setSignerOverride("AWSS3V4SignerType");
|
awsClientConfig.setProtocol(Protocol.HTTP);
|
|
client = AmazonS3ClientBuilder.standard()
|
.withCredentials(new
|
AWSStaticCredentialsProvider(credentials))
|
.withClientConfiguration(awsClientConfig)
|
.withEndpointConfiguration(new
|
AwsClientBuilder.EndpointConfiguration(END_POINT, ""))
|
.disableChunkedEncoding()
|
.enablePathStyleAccess()
|
.build();
|
}catch (Exception e){
|
log.error("对象存储====================连接天翼云ZOS失败"+e.getMessage());
|
}
|
}
|
|
/**
|
* 上传文件
|
*
|
* @param bucketName 云端存放bucket名称
|
* @param key 重新命名的文件名
|
* @param filepath 将要上传的文件名称
|
* @throws FileNotFoundException
|
*/
|
|
public void uploadObject(String bucketName, String key, String filepath,
|
String mime){
|
try {
|
File file= new File(filepath);
|
PutObjectRequest request = new PutObjectRequest(bucketName, key, file);
|
PutObjectResult result = client.putObject(request);
|
}catch (Exception e){
|
log.error("对象存储===================="+filepath+"文件上传失败"+e.getMessage());
|
}finally {
|
shutDown();
|
}
|
}
|
|
/**
|
* 讲key文件存储在本地filename目标文件中
|
* @param bucketName
|
* @param key
|
* @param filename
|
*/
|
public void getObject(String bucketName, String key, String filename ){
|
try {
|
GetObjectRequest request = new GetObjectRequest(bucketName, key);
|
S3Object result = client.getObject(request);
|
System.out.print("=====request success=====\n");
|
try {
|
InputStream in = result.getObjectContent();
|
File outputFile = new File(filename);
|
FileOutputStream outputStream = new
|
FileOutputStream(outputFile);
|
byte[] read_buf = new byte[1024 * 1024];
|
int read_len = 0;
|
while ((read_len = in.read(read_buf)) > 0) {
|
outputStream.write(read_buf, 0, read_len);
|
}
|
in.close();
|
outputStream.close();
|
} catch (IOException e){
|
e.printStackTrace();
|
}
|
}catch (Exception e){
|
log.error("对象存储===================="+filename+"文件读取失败"+e.getMessage());
|
}finally {
|
shutDown();
|
}
|
}
|
public void deleteObject(String bucketName, String key ){
|
try {
|
DeleteObjectRequest request = new DeleteObjectRequest(bucketName, key);
|
client.deleteObject(request);
|
System.out.print("=====request deleteObject success=====");
|
}catch (Exception e){
|
log.error("对象存储===================="+key+"文件删除失败"+e.getMessage());
|
}finally {
|
shutDown();
|
}
|
}
|
|
|
/**
|
* 关闭
|
*
|
* @throws FileNotFoundException
|
*/
|
|
public void shutDown() {
|
if (client != null) {
|
// 关闭client
|
client.shutdown();
|
}
|
}
|
|
public static void main(String[] args) {
|
TyyZosUtil aLiYunUtil = new TyyZosUtil("", "uc4nnpsqep1i9fijqr37nokh",
|
"/rp41xCx/XdGEVCptdH6v7xpc9w=");
|
// aLiYunUtil.uploadObject("pongto", "work/li2.txt", "D://哈.txt",
|
// ".html,.html text/html");D://装机软件/办公学习
|
// aLiYunUtil.partUploadObject("pongto", "work/ps.exe",
|
// "D://装机软件/办公学习/Adobe_Illustrator_CS6_XiaZaiBa.exe",
|
// ".html,.html text/html");
|
// aLiYunUtil.deleteBucket("pongto");
|
}
|
|
/**
|
* 上传网络文件
|
*
|
* @param bucketName 云端存放bucket名称
|
* @param key 重新命名的文件名
|
* 将要上传的文件名称
|
* @throws IOException
|
*/
|
|
public boolean uploadOnlineObject(String url, String bucketName, String key ) {
|
try {
|
|
InputStream inputStream = new URL(url).openStream();
|
if (inputStream != null) {
|
ObjectMetadata metadata = new ObjectMetadata();
|
PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
|
PutObjectResult result = client.putObject(request);
|
}else {
|
log.error("对象存储===================="+url+"网络文件上传失败,网络文件读取失败");
|
}
|
}catch (Exception e){
|
log.error("对象存储===================="+url+"网络文件上传失败"+e.getMessage());
|
}finally {
|
shutDown();
|
}
|
return false;
|
|
}
|
public boolean uploadInputstreamObject(InputStream inputStream, String bucketName, String key ) {
|
try {
|
|
if (inputStream != null) {
|
ObjectMetadata metadata = new ObjectMetadata();
|
metadata.setContentLength(inputStream.available());
|
|
PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
|
request.setCannedAcl(CannedAccessControlList.PublicRead);
|
PutObjectResult result = client.putObject(request);
|
return true;
|
}
|
}catch (Exception e){
|
log.error("对象存储==================== 文件上传失败"+e.getMessage());
|
}finally {
|
shutDown();
|
}
|
return false;
|
|
}
|
|
}
|