Flutter web 文件上传

1,438 阅读1分钟

选择文件

使用三方库 file_picker 进行文件选择

```
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
  return {
    "files": result.files.map((file) {
      return {"name": file.name, "data": file.bytes};
    }).toList()
  };
}
```

得到文件名称和文件数据(数据格式:Uint8List)

上传文件

var partFile = MultipartFile.fromBytes(fileData, filename: 'test.xlsx');
    FormData data = FormData.fromMap(
        {"file": partFile});
    Response result = await post('/uploadAPI',
        data: data, options: Options(contentType: 'multipart/form-data'),
        onSendProgress: (int size, int currentSize) {
      print('size:$size currentSize:$currentSize');
    });

注意:

  1. fileData 类型为Uint8List
  2. 要设置contentType: 'multipart/form-data'