From 8b3dc43ec3ef6452be333727afd7e43b11e81994 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 31 十二月 2024 18:18:33 +0800
Subject: [PATCH] oss修改

---
 common/src/main/java/com/jilongda/common/component/AliOssFileUploadController.java |  354 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 177 insertions(+), 177 deletions(-)

diff --git a/common/src/main/java/com/jilongda/common/component/AliOssFileUploadController.java b/common/src/main/java/com/jilongda/common/component/AliOssFileUploadController.java
index 21770ec..67dfbf9 100644
--- a/common/src/main/java/com/jilongda/common/component/AliOssFileUploadController.java
+++ b/common/src/main/java/com/jilongda/common/component/AliOssFileUploadController.java
@@ -1,178 +1,178 @@
-package com.jilongda.common.component;
-
-
-import com.aliyun.oss.OSS;
-import com.aliyun.oss.OSSClientBuilder;
-import com.aliyun.oss.common.utils.BinaryUtil;
-import com.aliyun.oss.model.MatchMode;
-import com.aliyun.oss.model.OSSObject;
-import com.aliyun.oss.model.PolicyConditions;
-import com.aliyun.oss.model.PutObjectResult;
-import com.jilongda.common.basic.ApiResult;
-import com.jilongda.common.utils.WebUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-
-/**
- * @author feiyunchuan
- */
-@Slf4j
-@Api(tags = "Ali-OSS文件上传接口")
-@RestController
-@RequestMapping("/ali-oss/")
-public class AliOssFileUploadController {
-
-    @Value("${file.cdn:https://nncdn.pharmacylinked.com}")
-    private String FILE_CDN;
-
-
-//    @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
-//    @PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
-//    public String strUploads(@RequestParam(value = "file") MultipartFile mf) throws IOException {
-//        if (mf.isEmpty()) {
-//            return "请传入文件!";
-//        }
-//        String fileName = mf.getOriginalFilename();
-//        String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
-////        String realPath = "D:\\" + TimeDir;
-//        String realPath = "/usr/local/nginx/html/images/" + TimeDir;
-//        File file = new File(realPath);
-//        // 没有目录就创建
-//        if (!file.exists()) {
-//            file.mkdirs();
-//        }
-//        File targetFile = new File(realPath, fileName);//目标文件
-//        //开始从源文件拷贝到目标文件
-//        //传图片一步到位
-//        mf.transferTo(targetFile);
-//        //拼接数据
-//        return "http://eyes.chelota.com/images/" + TimeDir +"/"+ fileName;
+//package com.jilongda.common.component;
+//
+//
+//import com.aliyun.oss.OSS;
+//import com.aliyun.oss.OSSClientBuilder;
+//import com.aliyun.oss.common.utils.BinaryUtil;
+//import com.aliyun.oss.model.MatchMode;
+//import com.aliyun.oss.model.OSSObject;
+//import com.aliyun.oss.model.PolicyConditions;
+//import com.aliyun.oss.model.PutObjectResult;
+//import com.jilongda.common.basic.ApiResult;
+//import com.jilongda.common.utils.WebUtils;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.File;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.nio.charset.StandardCharsets;
+//import java.text.SimpleDateFormat;
+//import java.util.Date;
+//import java.util.LinkedHashMap;
+//import java.util.Map;
+//
+//
+///**
+// * @author feiyunchuan
+// */
+//@Slf4j
+//@Api(tags = "Ali-OSS文件上传接口")
+//@RestController
+//@RequestMapping("/ali-oss/")
+//public class AliOssFileUploadController {
+//
+//    @Value("${file.cdn:https://nncdn.pharmacylinked.com}")
+//    private String FILE_CDN;
+//
+//
+////    @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
+////    @PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
+////    public String strUploads(@RequestParam(value = "file") MultipartFile mf) throws IOException {
+////        if (mf.isEmpty()) {
+////            return "请传入文件!";
+////        }
+////        String fileName = mf.getOriginalFilename();
+////        String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+//////        String realPath = "D:\\" + TimeDir;
+////        String realPath = "/usr/local/nginx/html/images/" + TimeDir;
+////        File file = new File(realPath);
+////        // 没有目录就创建
+////        if (!file.exists()) {
+////            file.mkdirs();
+////        }
+////        File targetFile = new File(realPath, fileName);//目标文件
+////        //开始从源文件拷贝到目标文件
+////        //传图片一步到位
+////        mf.transferTo(targetFile);
+////        //拼接数据
+////        return "http://eyes.chelota.com/images/" + TimeDir +"/"+ fileName;
+////    }
+//    @ApiOperation(value = "服务端上传", notes = "服务端上传")
+//    @PostMapping(value = "upload")
+//    public ApiResult<String> fileUpload(@RequestParam(value = "file") MultipartFile file) throws IOException {
+//        InputStream inputStream = file.getInputStream();
+//        String filename = System.currentTimeMillis() + file.getOriginalFilename();
+//        // Endpoint以杭州为例,其它Region请按实际情况填写。
+//        final String endpoint = AliOss.endpoint;
+//        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
+//        final String accessKeyId = AliOss.accessKeyId;
+//        final String accessKeySecret = AliOss.accessKeySecret;
+//        final String bucketName = AliOss.bucketName;
+//        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
+//        String objectName = AliOss.dir + filename;
+//        // 创建OSSClient实例。
+//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+//        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
+//        // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
+//        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
+//        PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
+//        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
+//        String uri = ossObject.getResponse().getUri();
+//        // 关闭OSSClient。
+//        ossClient.shutdown();
+////        uri = uri.replace("http://nn-bucket.oss-cn-shanghai.aliyuncs.com",FILE_CDN);
+//        return ApiResult.okmsg(uri);
 //    }
-    @ApiOperation(value = "服务端上传", notes = "服务端上传")
-    @PostMapping(value = "upload")
-    public ApiResult<String> fileUpload(@RequestParam(value = "file") MultipartFile file) throws IOException {
-        InputStream inputStream = file.getInputStream();
-        String filename = System.currentTimeMillis() + file.getOriginalFilename();
-        // Endpoint以杭州为例,其它Region请按实际情况填写。
-        final String endpoint = AliOss.endpoint;
-        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
-        final String accessKeyId = AliOss.accessKeyId;
-        final String accessKeySecret = AliOss.accessKeySecret;
-        final String bucketName = AliOss.bucketName;
-        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
-        String objectName = AliOss.dir + filename;
-        // 创建OSSClient实例。
-        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
-        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
-        // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
-        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
-        PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
-        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
-        String uri = ossObject.getResponse().getUri();
-        // 关闭OSSClient。
-        ossClient.shutdown();
-//        uri = uri.replace("http://nn-bucket.oss-cn-shanghai.aliyuncs.com",FILE_CDN);
-        return ApiResult.okmsg(uri);
-    }
-
-
-    @ApiOperation(value = "服务端签名后直传", notes = "服务端签名后直传")
-    @PostMapping("signature")
-    public ApiResult<Map<String, String>> signature() {
-        OSS builder = new OSSClientBuilder().build(AliOss.endpoint, AliOss.accessKeyId, AliOss.accessKeySecret);
-        long expireTime = 30;
-        long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
-        Date expiration = new Date(expireEndTime);
-        PolicyConditions policyConds = new PolicyConditions();
-        policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
-        policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOss.dir);
-        String postPolicy = builder.generatePostPolicy(expiration, policyConds);
-        byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
-        String encodedPolicy = BinaryUtil.toBase64String(binaryData);
-        String postSignature = builder.calculatePostSignature(postPolicy);
-        Map<String, String> respMap = new LinkedHashMap<>(6);
-        respMap.put("accessid", AliOss.accessKeyId);
-        respMap.put("policy", encodedPolicy);
-        respMap.put("signature", postSignature);
-        // 示例为dir
-        respMap.put("dir", AliOss.dir);
-        // 前端为key
-        // respMap.put("key", AliOss.dir);
-        respMap.put("host", AliOss.host);
-//        respMap.put("cdn", AliOss.cdn);
-        respMap.put("expire", String.valueOf(expireEndTime / 1000));
-//        // 回调
-//        if (StringUtils.hasLength(AliOss.callbackUrl)) {
-//            JSONObject jasonCallback = new JSONObject();
-//            jasonCallback.put("callbackUrl", AliOss.callbackUrl);
-//            String callbackBody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType}}";
-//            jasonCallback.put("callbackBody", callbackBody);
-//            jasonCallback.put("callbackBodyType", "application/json");
-//            String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
-//            respMap.put("callback", base64CallbackBody);
-//        }
-
-        HttpServletResponse response = WebUtils.response();
-        assert response != null;
-        response.setHeader("Access-Control-Allow-Origin", "*");
-        response.setHeader("Access-Control-Allow-Methods", "GET, POST");
-
-        // 关闭OSSClient。
-        builder.shutdown();
-        return ApiResult.success(respMap);
-    }
-
-    @ApiOperation(value = "服务端上传(二进制字符串)", notes = "服务端上传")
-    @PostMapping(value = "str/upload")
-    public String strUpload(InputStream inputStream, String filename) throws IOException {
-        //String filename = System.currentTimeMillis() + CodeGenerateUtils.generateVolumeSn()+".jpg";
-        // Endpoint以杭州为例,其它Region请按实际情况填写。
-        final String endpoint = AliOss.endpoint;
-        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
-        final String accessKeyId = AliOss.accessKeyId;
-        final String accessKeySecret = AliOss.accessKeySecret;
-        final String bucketName = AliOss.bucketName;
-        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
-        String objectName = AliOss.dir + filename;
-        // 创建OSSClient实例。
-        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
-        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
-        // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
-        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
-        PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
-        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
-        String uri = ossObject.getResponse().getUri();
-        // 关闭OSSClient。
-        ossClient.shutdown();
-        return uri;
-    }
-
-    /**
-     * oss上传成功回调
-     *
-     * @param callback
-     * @return
-     */
-    @ApiOperation(value = "oss回调", notes = "oss回调")
-    @PostMapping(value = "/callback")
-    public ApiResult callback(@RequestBody Map<String, Object> callback) {
-        String filename = "http://".concat(AliOss.bucketName).concat(".").concat(AliOss.endpoint).concat("/").concat(callback.get("filename").toString());
-        return ApiResult.okmsg(filename);
-    }
-
-}
+//
+//
+//    @ApiOperation(value = "服务端签名后直传", notes = "服务端签名后直传")
+//    @PostMapping("signature")
+//    public ApiResult<Map<String, String>> signature() {
+//        OSS builder = new OSSClientBuilder().build(AliOss.endpoint, AliOss.accessKeyId, AliOss.accessKeySecret);
+//        long expireTime = 30;
+//        long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
+//        Date expiration = new Date(expireEndTime);
+//        PolicyConditions policyConds = new PolicyConditions();
+//        policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
+//        policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOss.dir);
+//        String postPolicy = builder.generatePostPolicy(expiration, policyConds);
+//        byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
+//        String encodedPolicy = BinaryUtil.toBase64String(binaryData);
+//        String postSignature = builder.calculatePostSignature(postPolicy);
+//        Map<String, String> respMap = new LinkedHashMap<>(6);
+//        respMap.put("accessid", AliOss.accessKeyId);
+//        respMap.put("policy", encodedPolicy);
+//        respMap.put("signature", postSignature);
+//        // 示例为dir
+//        respMap.put("dir", AliOss.dir);
+//        // 前端为key
+//        // respMap.put("key", AliOss.dir);
+//        respMap.put("host", AliOss.host);
+////        respMap.put("cdn", AliOss.cdn);
+//        respMap.put("expire", String.valueOf(expireEndTime / 1000));
+////        // 回调
+////        if (StringUtils.hasLength(AliOss.callbackUrl)) {
+////            JSONObject jasonCallback = new JSONObject();
+////            jasonCallback.put("callbackUrl", AliOss.callbackUrl);
+////            String callbackBody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType}}";
+////            jasonCallback.put("callbackBody", callbackBody);
+////            jasonCallback.put("callbackBodyType", "application/json");
+////            String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
+////            respMap.put("callback", base64CallbackBody);
+////        }
+//
+//        HttpServletResponse response = WebUtils.response();
+//        assert response != null;
+//        response.setHeader("Access-Control-Allow-Origin", "*");
+//        response.setHeader("Access-Control-Allow-Methods", "GET, POST");
+//
+//        // 关闭OSSClient。
+//        builder.shutdown();
+//        return ApiResult.success(respMap);
+//    }
+//
+//    @ApiOperation(value = "服务端上传(二进制字符串)", notes = "服务端上传")
+//    @PostMapping(value = "str/upload")
+//    public String strUpload(InputStream inputStream, String filename) throws IOException {
+//        //String filename = System.currentTimeMillis() + CodeGenerateUtils.generateVolumeSn()+".jpg";
+//        // Endpoint以杭州为例,其它Region请按实际情况填写。
+//        final String endpoint = AliOss.endpoint;
+//        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
+//        final String accessKeyId = AliOss.accessKeyId;
+//        final String accessKeySecret = AliOss.accessKeySecret;
+//        final String bucketName = AliOss.bucketName;
+//        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
+//        String objectName = AliOss.dir + filename;
+//        // 创建OSSClient实例。
+//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+//        // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
+//        // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
+//        // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
+//        PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
+//        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
+//        String uri = ossObject.getResponse().getUri();
+//        // 关闭OSSClient。
+//        ossClient.shutdown();
+//        return uri;
+//    }
+//
+//    /**
+//     * oss上传成功回调
+//     *
+//     * @param callback
+//     * @return
+//     */
+//    @ApiOperation(value = "oss回调", notes = "oss回调")
+//    @PostMapping(value = "/callback")
+//    public ApiResult callback(@RequestBody Map<String, Object> callback) {
+//        String filename = "http://".concat(AliOss.bucketName).concat(".").concat(AliOss.endpoint).concat("/").concat(callback.get("filename").toString());
+//        return ApiResult.okmsg(filename);
+//    }
+//
+//}

--
Gitblit v1.7.1