| 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.oss.FileContent; | 
| import com.doumee.core.oss.FileModel; | 
| import com.doumee.core.utils.FileDigest; | 
|   | 
| import java.io.*; | 
| import java.net.URL; | 
| import java.time.LocalDate; | 
| import java.time.format.DateTimeFormatter; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| import com.doumee.core.utils.ID; | 
| 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; | 
|   | 
|     } | 
|   | 
| } |