我的flutter应用程序使用firebase作为后端,但我需要将媒体文件(照片和视频)存储在我的s3存储桶中。使命是将从图像选择器中检索到的媒体上传到s3中并获取url,然后可以将其作为字符串存储在firebase数据库中。
问题在于缺乏aws库或dart2的API。我在pub中找到了3个,但其中2个与dart 2不兼容,1个正在开发中。有没有人在flutter中使用dart2实现了这一点?欢迎提出任何建议。谢谢你。
我找到的包是(pub.dartlang.org):aws_client、aws_interop、amazon_s3
4条答案
按热度按时间0ejtzxu11#
有几种方法可以做到。一种方法是将sign your request与Signature V4和
POST
一起将您的文件发送到S3。首先,创建一个策略帮助器:
然后,使用您的策略助手签署您的请求,并通过
http.MultipartRequest
上传:请注意,此方法需要您提供访问密钥和密钥。如果您使用Cognito等服务,建议您获取临时访问密钥和密钥。使用临时访问的示例在这里找到。
qmelpv7a2#
您可以使用包amazon_s3_cognito上传和删除图片到amazon s3。
我是插件的作者,我们正在使用这个插件成功地在我们的许多项目。
_image. path =要上传的图像的路径(flutter中的file. path方法)
IMAGE_NAME =此图像以您在此给出的名称上传到s3服务器。
对于获取图像,您可以使用cached_network_image包
CachedNetworkImage可以直接使用或通过ImageProvider使用。
gfttwv5a3#
您可以使用Flutter Multipart,类似于这样
ppcbkaq54#
您可以使用包
amazon_s3_cognito
上传图像。但它在iOS端有问题,你可以试试我的叉子。把这行写进你的pubspec.yaml: