【发布时间】:2021-05-02 09:36:30
【问题描述】:
每当我从 Flutter 应用程序将图像文件上传到我的存储桶时,该对象会自动在元数据中显示为“binary/octet-stream”,而不是我需要的“image/jpeg”类别。
我使用的代码是这样的;
String filename}) async {
final endpoint = 'https://$bucket.s3-$region.amazonaws.com ';
final uploadDest = '$destDir/${filename ?? path.basename(file.path)}';
final stream = http.ByteStream(Stream.castFrom(file.openRead()));
final length = await file.length();
final uri = Uri.parse(endpoint);
final req = http.MultipartRequest("POST", uri);
final multipartFile = http.MultipartFile('file', stream, length,
filename: path.basename(file.path)
);
final policy = Policy.fromS3PresignedPost(uploadDest, bucket, accessKey, 15, length, region: region);
final key = SigV4.calculateSigningKey(secretKey, policy.datetime, region, 's3');
final signature = SigV4.calculateSignature(key, policy.encode());
req.files.add(multipartFile);
req.fields['key'] = policy.key;
req.fields['acl'] = 'public-read';
req.fields['X-Amz-Credential'] = policy.credential;
req.fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';
req.fields['X-Amz-Date'] = policy.datetime;
req.fields['Policy'] = policy.encode();
req.fields['X-Amz-Signature'] = signature;
如何将照片自动上传为“image/jpeg”,以便可以在浏览器中查看而不是下载到我的桌面?
【问题讨论】:
标签: flutter dart amazon-s3 image-upload