如何在 Flutter for Web 中使用 FileUploadInputElement 上传特定类型的文件
How to upload a specific type of file with FileUploadInputElement in Flutter for Web
我试图为一个 flutter 项目创建一个简单的文件上传器,旨在将图像上传到 Firebase 存储桶,但我找不到 select 文件类型的方法。
我已经阅读了 not-so-exhaustive documentation of Dart,但我没有找到任何与我正在尝试做的相似的内容。
static Future<Uri> showUploadDialog(
firebase.StorageReference filePath, String fileName) async {
Completer completer = Completer();
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen(
(changeEvent) {
final file = uploadInput.files.first;
final reader = FileReader();
reader.onLoadEnd.listen(
(loadEndEvent) async {
debugPrint("Selected the file to be uploaded.");
// Here we handle the file.
completer.complete(uploadFile(file, filePath, fileName));
},
);
reader.readAsDataUrl(file);
},
);
return await completer.future;
}
我的目标是能够看到一个 FileUploadInputElement,它不允许我上传不同于图像文件(具有图像特定扩展名)的文件。
您需要设置元素的接受属性(在模拟点击之前)。
例如,为了只接受 png 和 jpg 文件,您需要将其设置为 .png,.jpg
:
InputElement uploadInput = FileUploadInputElement();
uploadInput.accept = '.png,.jpg'
uploadInput.click();
接受属性的语法是为 HTML 输入接受属性指定的语法:
<input accept="file_extension|audio/*|video/*|image/*|media_type">
更多细节可以在网上找到,比如w3schools:
我试图为一个 flutter 项目创建一个简单的文件上传器,旨在将图像上传到 Firebase 存储桶,但我找不到 select 文件类型的方法。
我已经阅读了 not-so-exhaustive documentation of Dart,但我没有找到任何与我正在尝试做的相似的内容。
static Future<Uri> showUploadDialog(
firebase.StorageReference filePath, String fileName) async {
Completer completer = Completer();
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen(
(changeEvent) {
final file = uploadInput.files.first;
final reader = FileReader();
reader.onLoadEnd.listen(
(loadEndEvent) async {
debugPrint("Selected the file to be uploaded.");
// Here we handle the file.
completer.complete(uploadFile(file, filePath, fileName));
},
);
reader.readAsDataUrl(file);
},
);
return await completer.future;
}
我的目标是能够看到一个 FileUploadInputElement,它不允许我上传不同于图像文件(具有图像特定扩展名)的文件。
您需要设置元素的接受属性(在模拟点击之前)。
例如,为了只接受 png 和 jpg 文件,您需要将其设置为 .png,.jpg
:
InputElement uploadInput = FileUploadInputElement();
uploadInput.accept = '.png,.jpg'
uploadInput.click();
接受属性的语法是为 HTML 输入接受属性指定的语法:
<input accept="file_extension|audio/*|video/*|image/*|media_type">
更多细节可以在网上找到,比如w3schools: