在做flutter時(shí)遇到圖片上傳到阿里oss上的功能, 首先官網(wǎng)上沒有針對(duì)dart的sdk, 因此, 我通過https://pub.dev/?查詢竟然有大佬提供了庫, ?https://pub.dev/packages/aly_oss, 看了這個(gè)庫, 但是我在flutter pub get成功后執(zhí)行 flutter run盡然失敗. 因此, ?換個(gè)思路, 通過
http://www.reibang.com/p/7ca626c43863, 和?https://blog.csdn.net/Pillar1066527881/article/details/90447283文章的提示(非常感謝大佬), 后來偶然看到官網(wǎng)有關(guān)于直接用api上傳的提示, 搗鼓了一天, 做出來了, 現(xiàn)分享如下:
1. 首先通過接口獲取本服務(wù)器配置的bucket和key, 屬于基礎(chǔ)配置, 后面要用;
2. 然后通過接口獲取accessKeyId,?accessKeySecret,securityToken, 也屬于基礎(chǔ)配置, 后面要用;
3. 然后就是組裝FormData, 如圖1所示,?
1)?Filename: 對(duì)應(yīng)本地使用的名;
2)?key: 上傳到服務(wù)器的文件名和路徑,?AliOssManager.instance.model.key為上面第一步提到的key;
3)?policy:?OssUtil類中組裝的(不好意思, 我也沒看懂);
4)?OSSAccessKeyId: 第二步提到的accessKeyId;
5)?signature:?OssUtil類中組裝的, 參數(shù)accessKeySecret為第二步提到的accessKeySecret;
6)?x-oss-security-token: 第二步提到的securityToken;
7)?file: 圖片文件;
4. 組裝好FormData后, 就是調(diào)用Dio發(fā)送網(wǎng)絡(luò)請(qǐng)求了, 如圖2所示,?
為Dio的post請(qǐng)求所需要的參數(shù), 此時(shí), 我們只需要關(guān)心path和data, data, 就是剛才組裝的FormData, path我這邊糾結(jié)了很久,也不知道是什么, 后來偶然在官網(wǎng)上看到了,圖3所示
path為 ?BucketName.oss-cn-hangzhou.aliyuncs.com, ?BucketName也就是前面第一步獲取到的bucket, ?oss-cn-hangzhou.aliyuncs.com為?endpoint, 申請(qǐng)oss服務(wù)的時(shí)候會(huì)有這個(gè), 中間就 ?. ? 連接,?
5. 所有工作都完成, ?運(yùn)行, 解決問題蔬螟。