找了很多资料,没有提及uniapp如何上传AWS S3的文件方法。没法子硬着头皮读AWS的英文文档。
开始使用了JS-SDK,搞了半天好不容易安装完成后,尝试调用上传文件的调用,结果发现最后要使用XMLHttpRequest(),结果一读uniapp的文档,不支持。白折腾大半天。只好另想他法。发现了一个基于表单的POST的方法,对比uniapp文档后,感觉uni.uploadFile()应该可以用,尝试了不同的方式,总算是通过uni.uploadFile()成功的传到了AWS S3上。
主要几点搞清楚了,也不是很复杂。
- 在AWS S3上,一定要把bucket桶的权限配置上,否则一定会老收到AccessDenied信息。
- 如何准备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)
- 准备formData,这个一定要和policy里的定义对上(https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html)
- 要配置一个成功上传后返回调用的XML,AWS S3上传成功后会调用这个XML来返回参数。否则上传成功了也收不到正确的响应。
uniapp没有开发底层的网络层日志,确实踩了不少的坑。
13 个评论
要回复文章请先登录或注册
1***@qq.com
1***@qq.com
1***@qq.com
zhengfuzhe
zhengfuzhe
百世创一 (作者)
zhengfuzhe
百世创一 (作者)
zhengfuzhe
百世创一 (作者)