zoukankan      html  css  js  c++  java
  • springboot上传到阿里OSS

     阿里OSS文档

    Bucket存储空间
    Object对象或者文件
    EndpointOSS 访问域名

    更多请看 

    配置文件

    alibaba:
      cloud:
        access-key: LTAI4GAx***cmUvBy3DHmeJh
        secret-key: UHLJorhm***p9xObtSr7bprErS1t6J
        oss:
          endpoint: oss-cn-shenzhen.aliyuncs.com
          bucket: xx-hzxx
    
    @RestController
    @RequestMapping("thirdparty")
    public class OssController {
    
        @Autowired
        OSS ossClient;
    
        @Value("${alibaba.cloud.oss.endpoint}")
        private String endpoint;
    
        @Value("${alibaba.cloud.oss.bucket}")
        private String bucket;
    
        @Value("${alibaba.cloud.access-key}")
        private String accessId;
    
        @RequestMapping("/oss/policy")
        public R policy(){
    
            // host的格式为 bucketname.endpoint
            String host = "https://" + bucket + "." + endpoint;
    
            // callbackUrl为 上传回调服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
            String callbackUrl = "http://88.88.88.88:8888";
    
            // 用户上传文件时指定的前缀,也就是目录
            String format = new SimpleDateFormat("YYYY-MM-dd").format(new Date());
            String dir = format;
    
            // 创建OSSClient实例,引入自动依赖注入,这里不需要再new了
            // OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);
    
            Map<String, String> respMap = null;
    
            try {
                long expireTime = 30;
                long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
                Date expiration = new Date(expireEndTime);
                // PostObject请求最大可支持的文件大小为5 GB,即CONTENT_LENGTH_RANGE为5*1024*1024*1024。
                PolicyConditions policyConds = new PolicyConditions();
                policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
                policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
    
                String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);
                byte[] binaryData = postPolicy.getBytes("utf-8");
                String encodedPolicy = BinaryUtil.toBase64String(binaryData);
                String postSignature = ossClient.calculatePostSignature(postPolicy);
    
                respMap = new LinkedHashMap<String, String>();
                respMap.put("accessid", accessId);
                respMap.put("policy", encodedPolicy);
                respMap.put("signature", postSignature);
                respMap.put("dir", dir);
                respMap.put("host", host);
                respMap.put("expire", String.valueOf(expireEndTime / 1000));
                // respMap.put("expire", formatISO8601Date(expiration));
    
          /*
          JSONObject jasonCallback = new JSONObject();
          jasonCallback.put("callbackUrl", callbackUrl);
          jasonCallback.put("callbackBody",
              "filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");
          jasonCallback.put("callbackBodyType", "application/x-www-form-urlencoded");
          String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
          respMap.put("callback", base64CallbackBody);
           */
    
            } catch (Exception e) {
                // Assert.fail(e.getMessage());
                System.out.println(e.getMessage());
            } finally {
                ossClient.shutdown();
            }
    
            return R.ok().put("data", respMap);
    
        }
    
    }
    不经一番彻骨寒,哪有梅花扑鼻香?
  • 相关阅读:
    深入理解Guava Cache的refresh和expire刷新机制
    单机、分布式、集群的区别与联系
    理解Word2Vec
    Struts2 XML配置详解
    目标检测中的数据增强方法(附详细代码讲解)
    做笔记就用印象笔记,支持录音做笔记( 附剪藏 插件下载,一键将网页内容保存笔记中进行编辑)
    教你用OpenCV 和 Python给证件照换底色(蓝底 <->红底->白底)
    一招教你如何用Word直接打开PDF进行编辑,无需下载转换软件
    小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练
    小白也能弄懂的目标检测YOLO系列之YOLOV1
  • 原文地址:https://www.cnblogs.com/zongyao/p/13831086.html
Copyright © 2011-2022 走看看