扑向服务器发送空文件

时间:2019-12-29 10:37:25

标签: api flutter file-upload multipartform-data dio

嗨,我正尝试通过flutter应用程序将文件上传到服务器,但是文件始终为空。 它工作正常,然后停止工作。

这是我的代码:

static uploadImageToServer(String image) async {
File imageFile = new File(image);

Map<String, String> headers = {
  'Content-Type': 'multipart/form-data',
  'Accept-Charset': 'UTF-8'
};

var stream = new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
var length = await imageFile.length();
print(imageFile.path);

var uri = Uri.parse("http://planning.test/test_image");

var request = new http.MultipartRequest("POST", uri);

var multipartFile = new http.MultipartFile('File', stream, length,
    filename: "test_image_failure.jpg");

request.headers.addAll(headers);
request.fields['Destination'] = '/';

print("**********");
print(multipartFile.filename);
print(uri);
print(multipartFile.length);
print("**********");

request.files.add(multipartFile);

print(request.contentLength);

var response = await request.send();

print(response.statusCode);

response.stream.transform(utf8.decoder).listen((value) {
  print(value);
});

}

并带有dio包

_dioUpload(String imageFile)async {
var dio = Dio();
var formData = FormData();
formData.files.add(MapEntry(
  "File",
  await MultipartFile.fromFile(imageFile, filename: "xx.png"),
));

print(formData.files.first.value.length);
var response = await dio.post(
    "http://planning.test/test_image",
    data: formData,
  onSendProgress: (received, total) {
    if (total != -1) {
      print((received / total * 100).toStringAsFixed(0) + "%");
    }
  },
);
print(response);

}

我不知道正在发生什么,一切看起来都很好,并且文件存在。

thx

1 个答案:

答案 0 :(得分:0)

我正在对抖动进行改造,并发送一个空文件,如下所示。

File.fromRawPath(Uint8List.fromList([0]))

改造示例

@PUT('profile')
@FormUrlEncoded()
Future<void> update(@Header("Authorization") String token,
            @Field() String name, @Field() String surname, @Part() File avatar);

示例

await myapi.update("_token_","Sr", "Burton", File.fromRawPath(Uint8List.fromList([0])));