首页 > 其他分享 >OSS实现文件上传功能

OSS实现文件上传功能

时间:2022-09-19 21:44:21浏览次数:141  
标签:文件 String spring OSS respMap put 上传 oss cloud

心有千斤坠,却无一字言

使用对象存储,将文件上传到阿里云分布式文件服务器上。

帮助文档:

整合spring-cloud:

spring简单上传:

上传策略:服务端签名后直传

使用示例:

登录阿里云账号

创建一个bucket

创建子用户,获取EndpointAccessKey IDAccessKey Secret

分配权限

nacos注册中心填写相应的信息

spring:
cloud:
  alicloud:
    oss:
      endpoint:
      bucket:
    access-key:
    secret-key:

在项目中配置bootstrap.yml

spring:
application:
  name: gulimall-third-party
cloud:
  nacos:
    config:
      server-addr: 127.0.0.1:8848
      namespace:
      extension-configs[0]:
        data-id: oss.yaml
        group: DEFAULT_GROUP
        refresh: true

建立添加文件上传获取签名的Controller

@RestController
public class OssController {

   @Autowired
   OSS ossClient;

   @Value("${spring.cloud.alicloud.oss.endpoint}")
   String endpoint;

   @Value("${spring.cloud.alicloud.oss.bucket}")
   String bucket;

   @Value("${spring.cloud.alicloud.access-key}")
   String accessId;
   @Value("${spring.cloud.alicloud.secret-key}")
   String accessKey;

   @RequestMapping("/oss/policy")
   public Map<String, String> policy(){

       String host = "https://" + bucket + "." + endpoint; // host的格式为 bucketname.endpoint

       String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
       String dir = format; // 用户上传文件时指定的前缀。

       Map<String, String> respMap=null;
       try {
           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, 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));

      } catch (Exception e) {
           // Assert.fail(e.getMessage());
           System.out.println(e.getMessage());
      } finally {
           ossClient.shutdown();
      }
       return respMap;
  }

}

添加上传跨域规则

 

 

 

 

 

 

 

标签:文件,String,spring,OSS,respMap,put,上传,oss,cloud
From: https://www.cnblogs.com/l12138h/p/16709184.html

相关文章

  • Windows中使用SMB共享文件夹
    SMB共享文件夹简单步骤:打开【控制面板】打开【启动或关闭windows功能】打开【SMB1.0/CIFS文件共享支持】重启电脑到磁盘中选择需要共享的文件夹选中文件夹【属性......
  • Python查看文件各个时间
    importos,timefilePath='test.txt'#获取文件创建时间戳print(os.path.getctime(filePath))#获取文件的修改时间戳print(os.path.getmtime(filePath))#获取文......
  • eplan数据导出为EXCEL和PDF文件
    1.在桌面创建两个Excel表格,一个命名为模拟文件,一个命名为目标文件,首先打开模拟文件,在模拟文件中把部件采购申请表的参数输入,表头输入#H#,下面标签输入###  2.上面的模......
  • python格式化输出输出数据到json文件
    input_python={'n_layer':n_layer,'L':L,'Emm':Emm,'mu':mu,'h':h,'P':P,'Q':......
  • Git忽略已经提交过一次文件Git忽略文件
    1、从未提交过的文件可以用.gitignore   也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件该文件只能作用于未跟踪的文件(UntrackedFiles),......
  • Idea 快速跳转编译后的.class类文件
    有时候找一个编译后的类文件层级太深、寻找起来太麻烦、这时候就想能直接点击源文件就可以跳转至.class文件经过痛苦的摸索!终于成功了!!!!1.第一步配置externalTools请......
  • centos7安装nginx详细步骤 useradd abc 新建用户 在 homg下出现abc文件夹
    centos7安装nginx详细步骤一、下载nginx安装包和所需依赖groupadd-g1002nginx#创建nginx用户useradd-g1002-u1002......
  • vue中上传excel文件的方法
    1.使用方法 <inputtype="file"@change="importExcel">或者使用element-ui<el-uploadref="input"action="/":show-file-list="false":auto-upload="false":on......
  • python读写文件模板记录
    目录读写模式读文件read(可选:size)一次性读全部内容readline()读取一行内容readlines()读取所有内容,返回列表从file中读取每行等同于readlines()的功能写......
  • tp5-实现资料下载&后台文件上传DOX/PDF/DOCX
    后台上传: 后台代码:<dl><labelclass="item-label"for="my-file-input">文件:</label><ahref="{$info.file_url}">{$info.file_name}</a>......