百世创一
百世创一
  • 发布:2021-06-28 01:08
  • 更新:2023-04-26 17:10
  • 阅读:2804

uniapp如何上传AWS S3

分类:uni-app

找了很多资料,没有提及uniapp如何上传AWS S3的文件方法。没法子硬着头皮读AWS的英文文档。

开始使用了JS-SDK,搞了半天好不容易安装完成后,尝试调用上传文件的调用,结果发现最后要使用XMLHttpRequest(),结果一读uniapp的文档,不支持。白折腾大半天。只好另想他法。发现了一个基于表单的POST的方法,对比uniapp文档后,感觉uni.uploadFile()应该可以用,尝试了不同的方式,总算是通过uni.uploadFile()成功的传到了AWS S3上。

主要几点搞清楚了,也不是很复杂。

  1. 在AWS S3上,一定要把bucket桶的权限配置上,否则一定会老收到AccessDenied信息。
  2. 如何准备policy和如何计算签名,这个是第二步,可以按照文档的样例去验证签名逻辑。(https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)(https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html)
  3. 准备formData,这个一定要和policy里的定义对上(https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html)
  4. 要配置一个成功上传后返回调用的XML,AWS S3上传成功后会调用这个XML来返回参数。否则上传成功了也收不到正确的响应。

uniapp没有开发底层的网络层日志,确实踩了不少的坑。

2 关注 分享
DCloud_heavensoft zhengfuzhe

要回复文章请先登录注册

DCloud_Android_DQQ

DCloud_Android_DQQ

回复 大大河马 :
是不是长度不一样。 base 有的算法是强制填满4的倍数的。 不够的用= 填充
2021-09-22 13:03
百世创一

百世创一 (作者)

回复 大大河马 :
你要看你服务器上配置的策略是否正确
2021-09-22 12:59
大大河马

大大河马

亚马逊文档我也看过好几遍,为什么我算出的base64和它的不一样。policy和formdata都一一配置。很困惑。好像uniapp只有你说得这唯一方法。但网上查不到相关信息。能否帮帮指点一下。谢谢
2021-09-04 08:35