【发布时间】:2021-06-27 10:00:31
【问题描述】:
或者如何通过 Flutter Amplify 将图像上传到具有公共访问权限的 s3?
在我当前的 Flutter 项目中,使用 amplify 将文件上传到 S3 时,我无法传递 ACL:public-read 属性。
因此,每当我将新文件上传到 s3 时,我都需要手动将其公开。 所以我只想上传一个对每个人都有公共读取权限的新文件。
我在 Javascript 项目中找到了一些解决方案,但在 Flutter 项目中没有。
下面是一个方法,我是用来上传的。
Future<String> uploadFile(String fileName, File local) async {
try {
Map<String, String> metadata = <String, String>{};
metadata['name'] = 'filename';
metadata['desc'] = 'A file';
S3UploadFileOptions options = S3UploadFileOptions(accessLevel: StorageAccessLevel.guest, metadata: metadata);
UploadFileResult result = await Amplify.Storage.uploadFile(key: fileName, local: local, options: options);
return result.key;
} catch (e) {
print('UploadFile Err: ' + e.toString());
}
return null;
}
【问题讨论】:
-
你能找到解决办法吗?
-
@IgorCorradi 实际上没有,但是我在我的应用程序中做了一个更改,即我在项目中通过公共 URL 显示图像的任何位置,现在我从 Amplify 获取该 URL。 Amplify 将一个令牌(默认有效期为 7 天)附加到该 URL,因此它可以通过 Image 视图显示。
标签: flutter amazon-s3 aws-amplify flutteramplify