Flutter 上传文件到阿里云OSS

大家好,我是学习Flutter一个月的三须鳗鱼张信哲 ,熟练使用CV大法。

Flutter 上传文件到阿里云OSS是个大坑,查了一堆博客,多多少少有些问题
有人写了库:[aly_oss 1.0.1](不建议使用 )
参考了这个博客:Flutter图片上传OSS,这个博客开篇第一句就把我搞蒙了…………

目前阿里没有针对Flutter有官方SDK可集成, 但是有人对Flutter的上传有封装库https://pub.dev/packages/aly_oss#-example-tab-, 所以我们只能通过post提交PostObject的形式来上传;

不过没关系,核心技术还在

开始开展传统艺能:CV大法

这是那位老哥的

// 通过ossServerUrl直接get获取到如下数据
{
   
   
        "StatusCode": 200,
          "AccessKeyId": "STS.NSsrKZes4cqm.....",
          "AccessKeySecret": "7eGnLZaEFsRCGYJAnrtdE9n.....",
          "Expiration": "2020-04-08T03:44:21Z",
          "SecurityToken": "CAISlQJ1q6Ft5B2y....."
  }

//表单需要的参数: AccessKeyId、AccessKeySecret、SecurityToken;
FormData formdata = new FormData.from({
   
   
        //文件名,随意
        'Filename': OssUtil.instance.getImageName(filePath),
        //"可以填写文件夹名(对应于oss服务中的文件夹)/" + fileName
        'key': uploadName,//上传后的文件名
        'policy': OssUtil.policy,
        //Bucket 拥有者的AccessKeyId。
        'OSSAccessKeyId': data['AccessKeyId'],
        //让服务端返回200,不然,默认会返回204
        'success_action_status': '200',
        'signature': OssUtil.instance.getSignature(data['AccessKeySecret']),
        //临时用户授权时必须,需要携带后台返回的security-token
        'x-oss-security-token': data['SecurityToken'],
        'file': new UploadFileInfo(
            file, OssUtil.instance.getImageNameByPath(filePath))
        //必须放在参数最后
   });
//然后通过存储地址直接把表单(formdata)上传上去;
Dio dio=Dio();
dio.options.responseType=ResponseType.plain;
Response response=awaitdio.post(<ossEndPointCdn>,data:formData);
......

有个问题:UploadFileInfo 已弃用,改用MultipartFile

准备工作一:准备文件

文件准备阶段,使用image_pickerimage_picker获取到的路径是个带包名的(临时?)路径,文件名也使用image_picker前缀来命名,使用 MultipartFile.fromFile获取文件时会有问题,需要使用MultipartFile.fromFileSync(MultipartFile文档也没有说明啊,那个接口干嘛,只能瞎几把猜望文生义了 )

准备工作二:准备OSS许可

oss许可让服务端去搞,返回一段json

{
   
   
    "StatusCode": "200",
    "AccessKeyId": "STS.NSsrKZes4cqm.....",
    "AccessKeySecret": "7eGnLZaEFsRCGYJAnrtdE9n.....",
    "Expiration": "2020-04-08T03:44:21Z",
    "SecurityToken"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值