123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package cn.com.ty.lift.common.utils;
- import cn.hutool.json.JSON;
- import cn.hutool.json.JSONUtil;
- import com.aliyun.oss.OSS;
- import com.aliyun.oss.OSSClientBuilder;
- import com.aliyun.oss.model.*;
- import java.io.*;
- /**
- * @author wcz
- * @date 2019/11/29
- * @description aliyun OSS工具类
- */
- public class AliyunOSSUtil {
- // Endpoint以杭州为例,其它Region请按实际情况填写。
- String endpoint = "http://oss-cn-beijing.aliyuncs.com";
- // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
- String accessKeyId = "LTAI4FkSqFZa6LH9HqAsVott";
- String accessKeySecret = "w7GXuh5tf1hduQuZ2AzT3a4q14BI1i";
- public static void main(String[] args) {
- File file = new File("D:\\mybatis.jpg");
- String filename = file.getName();
- String suffix = filename.substring(filename.indexOf("."));
- System.out.println("filename: " + filename);
- System.out.println("suffix: " + suffix);
- AliyunOSSUtil util = AliyunOSSUtil.me();
- util.putFile("temp15827479607","2019/12/03/"+System.currentTimeMillis() + suffix,file);
- byte[] content = "ceshi".getBytes();
- util.putObject("temp15827479607",content,"测试存储");
- }
- public AliyunOSSUtil() {
- }
- public AliyunOSSUtil(String endpoint, String accessKeyId, String accessKeySecret) {
- this.endpoint = endpoint;
- this.accessKeyId = accessKeyId;
- this.accessKeySecret = accessKeySecret;
- }
- public static AliyunOSSUtil me(){
- return new AliyunOSSUtil();
- }
- public static AliyunOSSUtil me(String endpoint,String accessKeyId, String accessKeySecret){
- return new AliyunOSSUtil(endpoint,accessKeyId,accessKeySecret);
- }
- /**
- * @param
- * @return
- * @description 创建存储空间
- * 存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于新建一个存储空间
- * @date 2019/11/29 10:30
- */
- public void createBucket(String bucketName) {
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- // 创建存储空间。
- ossClient.createBucket(bucketName);
- // 关闭OSSClient。
- ossClient.shutdown();
- }
- /**
- * @param
- * @return
- * @description 上传文件,上传文件至OSS
- * @date 2019/11/29 10:31
- */
- <<<<<<< Updated upstream
- public PutObjectResult putObject(String bucketName, byte[] content, String objectName) {
- =======
- public boolean putObject(String bucketName,byte[] content,String objectName) {
- >>>>>>> Stashed changes
- // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- <<<<<<< Updated upstream
- // 上传内容到指定的存储空间(bucketName)并保存为指定的文件名称(objectName)。
- PutObjectResult result = ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content));
- // 关闭OSSClient。
- ossClient.shutdown();
- return result;
- =======
- try {
- // 上传内容到指定的存储空间(bucketName)并保存为指定的文件名称(objectName)。
- ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content));
- return true;
- }catch (Exception e){
- e.printStackTrace();
- return false;
- }finally {
- if(null != ossClient){
- // 关闭OSSClient。
- ossClient.shutdown();
- }
- }
- >>>>>>> Stashed changes
- }
- /**
- * @param
- * @return
- * @description 下载文件,获取文件的文本内容
- * @date 2019/11/29 10:32
- */
- public void getObject(String bucketName,String objectName) throws Exception {
- // <yourObjectName>从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
- OSSObject ossObject = ossClient.getObject(bucketName, objectName);
- // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
- InputStream content = ossObject.getObjectContent();
- if (content != null) {
- BufferedReader reader = new BufferedReader(new InputStreamReader(content));
- while (true) {
- String line = reader.readLine();
- if (line == null) break;
- System.out.println("\n" + line);
- }
- // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
- content.close();
- }
- // 关闭OSSClient。
- ossClient.shutdown();
- }
- /**
- * @param
- * @return
- * @description 列举文件:列举指定存储空间下的文件。默认列举100个文件
- * @date 2019/11/29 10:38
- */
- public void listObjects(String bucketName) {
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- // ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。
- ObjectListing objectListing = ossClient.listObjects(bucketName);
- // objectListing.getObjectSummaries获取所有文件的描述信息。
- for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
- System.out.println(" - " + objectSummary.getKey() + " " + "(size = " + objectSummary.getSize() + ")");
- }
- // 关闭OSSClient。
- ossClient.shutdown();
- }
- /**
- * @description 删除文件
- * @date 2019/11/29 10:44
- * @param
- * @return
- */
- public boolean deleteObject(String bucketName,String objectName){
- // <yourObjectName>表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- try {
- // 删除文件。
- ossClient.deleteObject(bucketName, objectName);
- return true;
- }catch (Exception e){
- e.printStackTrace();
- return false;
- }finally {
- // 关闭OSSClient。
- if(null != ossClient){
- ossClient.shutdown();
- }
- }
- }
- public void putFile(String bucketName,String objectName,File file){
- // 创建OSSClient实例。
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- // 创建PutObjectRequest对象。
- PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, file);
- // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
- // ObjectMetadata metadata = new ObjectMetadata();
- // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
- // metadata.setObjectAcl(CannedAccessControlList.Private);
- // putObjectRequest.setMetadata(metadata);
- // 上传文件。
- ossClient.putObject(putObjectRequest);
- // 关闭OSSClient。
- ossClient.shutdown();
- }
- }
|