Flutter Web 图片选择器只获取图片文件
Flutter Web Image picker get only images files
我正在尝试从 flutter web 获取图像,现在我正在这样做
try {
final html.InputElement input = html.document.createElement('input');
input
..type = 'file'
..accept = 'image/*';
input.onChange.listen((e) {
if (input.files.isEmpty) return;
final reader = html.FileReader();
reader.readAsDataUrl(input.files[0]);
reader.onError.listen((err) => setState(() {
print(err.toString());
}));
reader.onLoad.first.then((res) {
final encoded = reader.result as String;
// remove data:image/*;base64 preambule
final stripped =
encoded.replaceFirst(RegExp(r'data:image/[^;]+;base64,'), '');
setState(() {
backgroundBytes = base64.decode(stripped);
backgroundImage = input.files[0];
metaDataBackground = input.files[0].type;
});
});
});
input.click();
} catch (e) {
print('Error background image');
}
它工作得很好,但用户可以更改允许进入所有文件的文件类型,我必须阻止该操作
Bloack acction picker
有什么办法吗?
您无法阻止该操作,请参阅参考资料 Limit file format when using <input type="file">?
使用 accept 属性只提供了一种过滤感兴趣类型的文件的方法。浏览器仍然允许用户选择任何类型的文件。
在 input.onChange.listen
中,您可以检查 file extension type
和 alert
警告用户他没有 select 正确输入
我正在尝试从 flutter web 获取图像,现在我正在这样做
try {
final html.InputElement input = html.document.createElement('input');
input
..type = 'file'
..accept = 'image/*';
input.onChange.listen((e) {
if (input.files.isEmpty) return;
final reader = html.FileReader();
reader.readAsDataUrl(input.files[0]);
reader.onError.listen((err) => setState(() {
print(err.toString());
}));
reader.onLoad.first.then((res) {
final encoded = reader.result as String;
// remove data:image/*;base64 preambule
final stripped =
encoded.replaceFirst(RegExp(r'data:image/[^;]+;base64,'), '');
setState(() {
backgroundBytes = base64.decode(stripped);
backgroundImage = input.files[0];
metaDataBackground = input.files[0].type;
});
});
});
input.click();
} catch (e) {
print('Error background image');
}
它工作得很好,但用户可以更改允许进入所有文件的文件类型,我必须阻止该操作
Bloack acction picker
有什么办法吗?
您无法阻止该操作,请参阅参考资料 Limit file format when using <input type="file">?
使用 accept 属性只提供了一种过滤感兴趣类型的文件的方法。浏览器仍然允许用户选择任何类型的文件。
在 input.onChange.listen
中,您可以检查 file extension type
和 alert
警告用户他没有 select 正确输入