通过 file_picker 在 flutter web 中上传文件
upload file in flutter web by file_picker
我使用 file_picker: ^4.2.0
show package 来申请。
当我以 html 的形式获得网络版本时,遇到一些错误。
错误:path always null in web release
我获取文件的代码:
Future getFile() async {
FilePickerResult? result = await FilePicker.platform.pickFiles(
withReadStream: true,
type: FileType.custom,
allowedExtensions: ['png', 'jpeg', 'jpg', 'pdf'],
);
if (result != null) {
PlatformFile file = result.files.single;
setState(() {
_file = File(file.path.toString());
_filePath = file.path;
});
_uploadFile();
} else {
// file not choose
}
}
我使用 https://pub.dev/packages/file_picker 但在 flutter web 路径中不支持;
你应该使用字节;
我将文件字节保存在 var _fileBytes 中并在请求中使用;
var request = http.MultipartRequest('POST', Uri.parse('https://.....com'));
request.headers.addAll(headers);
request.files.add(
http.MultipartFile.fromBytes(
'image',
await ConvertFileToCast(_fileBytes),
filename: fileName,
contentType: MediaType('*', '*')
)
);
request.fields.addAll(fields);
var response = await request.send();
函数 ConvertFileToCast:
ConvertFileToCast(data){
List<int> list = data.cast();
return list;
}
对我有用:)
我使用 file_picker: ^4.2.0
show package 来申请。
当我以 html 的形式获得网络版本时,遇到一些错误。
错误:path always null in web release
我获取文件的代码:
Future getFile() async {
FilePickerResult? result = await FilePicker.platform.pickFiles(
withReadStream: true,
type: FileType.custom,
allowedExtensions: ['png', 'jpeg', 'jpg', 'pdf'],
);
if (result != null) {
PlatformFile file = result.files.single;
setState(() {
_file = File(file.path.toString());
_filePath = file.path;
});
_uploadFile();
} else {
// file not choose
}
}
我使用 https://pub.dev/packages/file_picker 但在 flutter web 路径中不支持;
你应该使用字节;
我将文件字节保存在 var _fileBytes 中并在请求中使用;
var request = http.MultipartRequest('POST', Uri.parse('https://.....com'));
request.headers.addAll(headers);
request.files.add(
http.MultipartFile.fromBytes(
'image',
await ConvertFileToCast(_fileBytes),
filename: fileName,
contentType: MediaType('*', '*')
)
);
request.fields.addAll(fields);
var response = await request.send();
函数 ConvertFileToCast:
ConvertFileToCast(data){
List<int> list = data.cast();
return list;
}
对我有用:)