Flutter通过api上传图片到阿里OSS

在做flutter时遇到图片上传到阿里oss上的功能, 首先官网上没有针对dart的sdk, 因此, 我通过https://pub.dev/ 查询竟然有大佬提供了库,  https://pub.dev/packages/aly_oss, 看了这个库, 但是我在flutter pub get成功后执行 flutter run尽然失败. 因此,  换个思路, 通过

https://www.jianshu.com/p/7ca626c43863, 和 https://blog.csdn.net/Pillar1066527881/article/details/90447283文章的提示(非常感谢大佬), 后来偶然看到官网有关于直接用api上传的提示, 捣鼓了一天, 做出来了, 现分享如下:

1. 首先通过接口获取本服务器配置的bucket和key, 属于基础配置, 后面要用;

2. 然后通过接口获取accessKeyId, accessKeySecret,securityToken, 也属于基础配置, 后面要用;

3. 然后就是组装FormData, 如图1所示, 

图1

1) Filename: 对应本地使用的名;

2) key: 上传到服务器的文件名和路径, AliOssManager.instance.model.key为上面第一步提到的key;

3) policy: OssUtil类中组装的(不好意思, 我也没看懂);

4) OSSAccessKeyId: 第二步提到的accessKeyId;

5) signature: OssUtil类中组装的, 参数accessKeySecret为第二步提到的accessKeySecret;

6) x-oss-security-token: 第二步提到的securityToken;

7) file: 图片文件;

4. 组装好FormData后, 就是调用Dio发送网络请求了, 如图2所示, 

图2

为Dio的post请求所需要的参数, 此时, 我们只需要关心path和data, data, 就是刚才组装的FormData, path我这边纠结了很久,也不知道是什么, 后来偶然在官网上看到了,图3所示

图3

path为  BucketName.oss-cn-hangzhou.aliyuncs.com,  BucketName也就是前面第一步获取到的bucket,  oss-cn-hangzhou.aliyuncs.com为 endpoint, 申请oss服务的时候会有这个, 中间就  .   连接, 

5. 所有工作都完成,  运行, 解决问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容