无关风月
2024-12-31 b5b2a78588ab4f0fe20710a31a1cbbae01638a1c
manage/src/main/java/com/jilongda/manage/component/AliOssManageFileUploadController.java
@@ -9,7 +9,6 @@
import com.aliyun.oss.model.PolicyConditions;
import com.aliyun.oss.model.PutObjectResult;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.component.AliOss;
import com.jilongda.common.utils.WebUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -33,7 +32,7 @@
@Slf4j
@Api(tags = "Ali-OSS文件上传接口")
@RestController
@RequestMapping("/ali-obs/")
@RequestMapping("/ali-oss/")
public class AliOssManageFileUploadController {
    @Value("${file.cdn:https://nncdn.pharmacylinked.com}")
@@ -45,13 +44,13 @@
        InputStream inputStream = file.getInputStream();
        String filename = System.currentTimeMillis() + file.getOriginalFilename();
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        final String endpoint = AliOss.endpoint;
        final String endpoint = AliOssMange.endpoint;
        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
        final String accessKeyId = AliOss.accessKeyId;
        final String accessKeySecret = AliOss.accessKeySecret;
        final String bucketName = AliOss.bucketName;
        final String accessKeyId = AliOssMange.accessKeyId;
        final String accessKeySecret = AliOssMange.accessKeySecret;
        final String bucketName = AliOssMange.bucketName;
        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
        String objectName = AliOss.dir + filename;
        String objectName = AliOssMange.dir + filename;
        log.info(objectName);
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
@@ -72,32 +71,32 @@
    @ApiOperation(value = "服务端签名后直传", notes = "服务端签名后直传")
    @PostMapping("signature")
    public ApiResult<Map<String, String>> signature() {
        OSS builder = new OSSClientBuilder().build(AliOss.endpoint, AliOss.accessKeyId, AliOss.accessKeySecret);
        OSS builder = new OSSClientBuilder().build(AliOssMange.endpoint, AliOssMange.accessKeyId, AliOssMange.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);
        policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOssMange.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("accessid", AliOssMange.accessKeyId);
        respMap.put("policy", encodedPolicy);
        respMap.put("signature", postSignature);
        // 示例为dir
        respMap.put("dir", AliOss.dir);
        respMap.put("dir", AliOssMange.dir);
        // 前端为key
        // respMap.put("key", AliOss.dir);
        respMap.put("host", AliOss.host);
//        respMap.put("cdn", AliOss.cdn);
        // respMap.put("key", AliOssMange.dir);
        respMap.put("host", AliOssMange.host);
//        respMap.put("cdn", AliOssMange.cdn);
        respMap.put("expire", String.valueOf(expireEndTime / 1000));
//        // 回调
//        if (StringUtils.hasLength(AliOss.callbackUrl)) {
//        if (StringUtils.hasLength(AliOssMange.callbackUrl)) {
//            JSONObject jasonCallback = new JSONObject();
//            jasonCallback.put("callbackUrl", AliOss.callbackUrl);
//            jasonCallback.put("callbackUrl", AliOssMange.callbackUrl);
//            String callbackBody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType}}";
//            jasonCallback.put("callbackBody", callbackBody);
//            jasonCallback.put("callbackBodyType", "application/json");
@@ -120,13 +119,13 @@
    public String strUpload(InputStream inputStream, String filename) throws IOException {
        //String filename = System.currentTimeMillis() + CodeGenerateUtils.generateVolumeSn()+".jpg";
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        final String endpoint = AliOss.endpoint;
        final String endpoint = AliOssMange.endpoint;
        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
        final String accessKeyId = AliOss.accessKeyId;
        final String accessKeySecret = AliOss.accessKeySecret;
        final String bucketName = AliOss.bucketName;
        final String accessKeyId = AliOssMange.accessKeyId;
        final String accessKeySecret = AliOssMange.accessKeySecret;
        final String bucketName = AliOssMange.bucketName;
        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
        String objectName = AliOss.dir + filename;
        String objectName = AliOssMange.dir + filename;
        log.info(objectName);
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
@@ -152,7 +151,7 @@
    @PostMapping(value = "/callback")
    public ApiResult callback(@RequestBody Map<String, Object> callback) {
        log.info("oss回调{}", callback);
        String filename = "http://".concat(AliOss.bucketName).concat(".").concat(AliOss.endpoint).concat("/").concat(callback.get("filename").toString());
        String filename = "http://".concat(AliOssMange.bucketName).concat(".").concat(AliOssMange.endpoint).concat("/").concat(callback.get("filename").toString());
        return ApiResult.okmsg(filename);
    }