javascript - 尝试在后端和前端上传到 s3
问题描述
我有一个小问题,我已经尝试解决了几个小时,但是没有成功。
我需要上传到 s3(用于用户个人资料图片)。我在后端成功地这样做了。
然后我将 url 作为字符串存储在数据库中(作为用户个人资料图片属性)
然而,问题来了。我在前端使用颤振,需要做以下事情。
向上传网址发出http请求,可以成功。但我不知道执行以下操作的方法:
- 允许用户从相机胶卷中为请求选择一张照片。在节点中,用户通过 req.files.file 选择一个文件,该文件被上传到 s3。我如何将 req.files.file(用户选择上传的文件)转换为用户从相机胶卷中选择的文件。那是我唯一的问题。
谢谢你。
解决方案
使用图像选择器的依赖项:
导入“包:image_picker/image_picker.dart”;
我这样做的方式是将文件转换为base64,然后是字节,然后在后端对其进行解码,然后从那里上传到s3。
uploadImage() async {
var _image = await ImagePicker.pickImage(source: ImageSource.gallery);
File croppedFile = await ImageCropper.cropImage(
sourcePath: _image.path,
ratioX: 1.0,
ratioY: 1.0,
maxWidth: 512,
maxHeight: 512,
);
var _params = {
"image_file": base64Encode(croppedFile.readAsBytesSync()),
};
return await restCall(POST, apiUrl.uploadImage, _params);
}
推荐阅读
- c# - 无法将类型“void”隐式转换为“System.Collections.Generic.List”
' - observable - 可观察 d3 中斜率图中的点
- c# - 如何在 EF Core 中级联更新?
- cakephp-3.0 - 第二次单击后分页器无法按预期工作
- assembly - 为什么奇偶校验标志为 1 而个数为奇数
- git - Gemfile.lock 在运行 bundle install 或 jekyll serve 时包含合并冲突
- mysql - 我如何过滤 MYSQL LIMIT 1 中的值
- html - flex元素中的最小宽度设置为最小内容不起作用
- stripe-payments - 使用 Stripe,暂停付款并在订阅开始时确认
- oop - 带有子程序的多态赋值可能导致 Fortran 中的数据损坏