file_picker_web 包为 file_picker 插件提供了 Web 平台的实现,使用户能够通过浏览器界面选择文件。它支持直接从浏览器流式传输文件数据,并轻松将文件加载到应用程序中。该包专为 Flutter Web 应用的无缝集成而设计,确保在不同浏览器中保持一致的文件处理体验。该包是更广泛的 file_picker 生态系统的一部分,专注于 Web 特定功能,如文件输入处理和基于流的读取。
适合场景
基于Web的文件上传
流式传输文件内容,无需完整下载
在网页表单中集成文件选择
正在加载文件以进行处理或预览
在Web应用程序中支持多种文件类型
主要特点
浏览器文件选择
文件流支持
跨浏览器兼容性
轻量级网络集成
用于文件加载的简单 API
适合对象
Flutter Web 应用需要文件输入
需要实时文件流的应用程序
在网页上使用 file_picker 插件的开发者
涉及文件预览或上传的项目
针对桌面和移动浏览器的网页应用
使用建议
需要 file_picker 核心包
仅限Web平台
可能需要处理浏览器权限
依赖于浏览器的文件输入功能
无原生文件系统访问
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
File Picker
A Flutter plugin that lets you use the native file explorer to pick single or multiple files, with extension filtering, directory selection, and save-file dialogs, across Android, iOS, Linux, macOS, Windows, and Web.
This repository is a Melos workspace hosting file_picker as a federated plugin: a single cross-platform API package on top of one implementation package per platform, all versioned and published independently.
Web implementation, including Wasm compilation support.
Almost all apps should only ever depend on file_picker directly. The platform packages are pulled in transitively and registered automatically by Flutter's plugin system; you only reach for one of them directly if you need a platform-specific API that isn't exposed on the shared facade (for example FilePickerDarwin.skipEntitlementsChecks() on macOS).
Quick start
dependencies:file_picker:^13.0.0
import'package:file_picker/file_picker.dart';
final file = awaitFilePicker.pickFile();
if (file != null) {
print(file.name);
print(await file.length()); // Returns Future<int?> (or use file.lengthSync())
}
See packages/file_picker/README.md for the full feature list, platform compatibility chart, and more usage examples (multiple files, extension filters, directory picking, save-file dialogs).
Migration
Upgrading to v13? See the Migrating to v13 Guide for details on PlatformFile.length() returning Future<int?> and the removal of legacy v12-deprecated parameters.
Upgrading from pre-v12? See the Migrating to v12 Guide for the federated architecture changes (FilePicker.pickFiles() returning List<PlatformFile>, platform options, and streaming).
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request, it covers testing requirements, versioning, and changelog conventions for this workspace.
To work on this repository locally:
dart pub global activate melos
melos bootstrap
melos run analyze # flutter analyze across every package
melos run test# flutter test across every package
Each package keeps its own pubspec.yaml and CHANGELOG.md and is released independently, only the package(s) you actually changed need a version bump.
Credits
file_picker was created and maintained by Miguel Ruivo, starting in 2018, growing it from a single Android/iOS plugin into the federated, cross-platform package it is today. This repository continues that work under new ownership, built entirely on the foundation of his years of effort.
Thank you, Miguel.
License
MIT, see LICENSE. Every package in this repository is released under the same license.