flutter - 使用 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_Horizon.mp3”。
我可以使用邮递员上传文件,但颤动代码给了我 500:内部服务器错误
尝试了几个在堆栈溢出时发现的代码,都给了我同样的错误
解决方案
你试过用 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');
});
推荐阅读
- ios - 在 WKWebView 中屏蔽广告
- java - Powerbuilder --- 调用返回对象列表的 Java EJB (CMIS) 方法时出错
- javascript - React中的Google Maps MeasureTool - 缩放后测量线消失
- java - (JAVA)为什么我没有结果?主课有问题?我找不到
- c# - 在特定对象上引发 PropertyChanged 事件
- server - 如何使我在服务器上运行的 Python 脚本在连接断开后自动重新启动?
- python - 如何遍历字典中的列表,并在 Python 的 for 循环中增加变量
- python - 来自数据生成器的随机裁剪图像
- java - 转换地图
列出 - >
- c# - 如何使用 C# 将文件发送到 Firebase