【发布时间】:2020-05-12 22:09:11
【问题描述】:
我想用Flutter web上传文件,但是遇到了一些问题,我的步骤如下:
/// choose file
void _chooseFile() {
InputElement uploadInput = FileUploadInputElement();
uploadInput.accept = ".mp4";
uploadInput.multiple = true;
uploadInput.click();
uploadInput.onChange.listen((event) {
final files = uploadInput.files;
if (files.length == 1) {
final file = files[0];
final reader = FileReader();
reader.onLoadEnd.listen((event) {
print('loaded: ${file.name}');
print('type: ${reader.result.runtimeType}');
print('file size = ${file.size}');
_uploadFile(file);
});
reader.onError.listen((event) {
print(event);
});
reader.readAsArrayBuffer(file);
}
});
}
/// upload file
/// file: in dart:html package not in dart:io package
void _uploadFile(File file) async {
FormData data = FormData.fromMap({
'file': MultipartFile.fromBytes(
List<int>, // -----------------------------> problem line
filename: file.name,
)
});
Dio dio = new Dio();
dio.post('upload file url', data: data, onSendProgress: (count, total) {
print('$count ==> $total');
}).then((value) {
print('$value');
}).catchError((error) => print('$error'));
}
问题是MultipartFile.fromBytes(List<int> value, {...}),但我不知道如何将file (在 dart:html 中而不是在 dart:io 中) 转换为 List<int>。
谢谢!!!
【问题讨论】:
-
print('type: ${reader.result.runtimeType}');打印什么? -
你是怎么解决这个问题的?
标签: flutter flutter-web