首页 > 解决方案 > 使用 Flutter 将文件上传到服务器时出错

问题描述

我有一个颤振应用程序,它使用 asp.net rest api 选择音频文件并将其上传到服务器。

我的颤振代码如下

 uploadFile() async {
    print(file.path);
    var postUri = Uri.parse("http://192.168.1.100:5041/api/fileup/up");
    var request = new http.MultipartRequest("POST", postUri);
    request.fields['user'] = 'blah';
    request.files.add(new http.MultipartFile.fromBytes('file', await File.fromUri(Uri.parse(file.path)).readAsBytes(),contentType: MediaType('audio','mp3')
    ));

    request.send().then((response) {
      if (response.statusCode == 200) {
        print("Uploaded!");
      }else{
        print(response.reasonPhrase);
      }
    });
  }

我的上述颤振代码的 file.path 值是从文件选择器返回的“/data/user/0/com.mydomain.myappname/cache/file_picker/Over_the_Horizo​​n.mp3”。

我可以使用邮递员上传文件,但颤动代码给了我 500:内部服务器错误

邮递员截图 在此处输入图像描述

尝试了几个在堆栈溢出时发现的代码,都给了我同样的错误

标签: flutterasp.net-web-apifile-upload

解决方案


你试过用 DIO 吗?

您可以使用 DIO 完成此操作,如下所示:

FormData formData = new FormData.fromMap({
    "file": await MultipartFile.fromFile(file.path,
        filename: file.path.split('/').last)
  });
await dio.post('http://192.168.1.100:5041/api/fileup/up', data: formData, onSendProgress: (int begin, int end) {
  var initial = begin;
  var done = end;
  print('$initial $end');
});

推荐阅读