MultipartRequest已成功上传到s3,但数据似乎无效

问题描述

这似乎是Flutter中非常简单的过程。但是,当我下载已上传到s3的视频时,无法播放该视频。视频播放器告诉我数据已损坏。 uploadUri是一个预先签名的s3链接。而filePath是我的视频的正确路径。 我从发送中收到200条回复

  Future<void> postVideo( String filePath,String uploadUri ) async {
    var request = http.MultipartRequest('PUT',Uri.parse( uploadUri ) );
    request.files.add(
        await http.multipartfile.fromPath(
            'video',filePath,contentType: MediaType('video','mp4')
    ));
    final response = await request.send();
    if (response.statusCode == 201 || response.statusCode == 200 ) {
      print( 'submit video response: ' + response.toString() );
    } else {
      throw Exception('Failed to post video');
    }
  }
@H_404_4@

有什么想法吗?

解决方法

这是有效的方法,不确定是什么魔术。

Future<void> postVideo( String filePath,String uploadUri ) async {
File file = File(filePath);
List<int> imageData = file.readAsBytesSync();

var response = await http.put(uploadUri,body: imageData,headers: {
  "Content-Type": "octet-stream","Content-Disposition": 'attachment; filename="resource"',"Content-Encoding": "identity","Content-Length": file.lengthSync().toString()
});

if (response.statusCode == 201 || response.statusCode == 200 ) {
  print( 'submit video response: ' + response.toString() );
} else {
  throw Exception('Failed to post story');
}

}