【发布时间】:2019-10-27 21:18:47
【问题描述】:
我正在开发一个 Flutter 应用程序,我在其中使用预签名 URL 将图像文件(PUT 请求)上传到 AWS S3。上传成功,因为我可以在 S3 中看到该文件。但是当我点击并从存储桶中下载它时,下载的文件已损坏。
我正在使用 Dio 库来上传文件。 通过邮递员将图像文件上传为二进制文件效果很好
uploadFileToPresignedS3(
File payload, String fileName, String presignedURL) async {
try {
Dio dio = new Dio();
FormData formData = new FormData.from(
{"name": fileName, "file1": new UploadFileInfo(payload, fileName)});
dio.put(presignedURL, data: formData);
} catch (ex) {
print(ex);
}
}
预期:上传的文件不会损坏
实际结果:上传的文件已损坏
【问题讨论】:
-
更新:我尝试使用 javascript XHR 上传,效果很好。
-
我没有使用 Dio 库,而是使用了 http.put(presignedURL, body: payload.readAsBytesSync());效果很好。
-
我也遇到了这个问题,可以分享一下代码吗?
-
http.put() 工作正常...但是如何使用 put() 获取上传进度? Dio 提供了一个“onSendProgress”方法来执行此操作。
标签: amazon-web-services amazon-s3 flutter pre-signed-url