我是 Flutter 的新手,在将文件上传到 API 时遇到问题。我曾尝试使用 FormData 和 MultiPartFile 但它返回错误。我也在这个视频中使用了代码,但它不起作用:
https://www.youtube.com/watch?v=c2tGUt7FLqY&t=318s
任何人都有解决方案。
我是 Flutter 的新手,在将文件上传到 API 时遇到问题。我曾尝试使用 FormData 和 MultiPartFile 但它返回错误。我也在这个视频中使用了代码,但它不起作用:
https://www.youtube.com/watch?v=c2tGUt7FLqY&t=318s
任何人都有解决方案。
好的,我找到了,留给遇到同样问题的人
if (result != null) {
for (var file in result.files) {
final formData = FormData.fromMap({
...someOtherData,
'file': MultipartFile.fromBytes(file.bytes as List<int>)
});
dio.post(
url,
data: formData,
);
}
}
我想到了。我们不能使用“文件”,因为它使用了 Flutter WEB 不支持的“dart.io”库。所以我们必须使用“平台文件”,它使用了 Flutter WEB 支持的 'dart.html' 库。这是代码:
addStudent(
{@required token,
@required name,
@required email,
@required password,
@required rollNo,
@required phoneNo,
@required PlatformFile? image,
@required gender}) async {
http.MultipartRequest request = http.MultipartRequest(
"POST",
Uri.parse('Your URL HERE'),
);
request.headers['Authorization'] = 'Bearer $token';
request.fields['name'] = name;
request.fields['email'] = email;
request.fields['password'] = password;
request.fields['gender'] = gender;
request.fields['rollno'] = rollNo;
request.fields['phoneNumber'] = phoneNo;
// Here is the code to upload image to API
request.files.add(new http.MultipartFile(
'image', image!.readStream!, image.size,
filename: image.name));
//-------Send request
await request.send().then((value) async {
//------Read response
String result = await value.stream.bytesToString();
//-------Your response
print(result);
});
}