【问题标题】:How to upload File to API in Flutter WEB如何在 Flutter WEB 中上传文件到 API
【发布时间】:2021-11-19 14:37:45
【问题描述】:
【问题讨论】:
标签:
flutter
api
flutter-web
form-data
multipartfile
【解决方案1】:
好的,我找到了,留给遇到同样问题的人
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,
);
}
}
【解决方案2】:
我想通了。我们不能使用“文件”,因为它使用了 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);
});
}