一个库,提供对系统 UI 的访问,以便从用户设备上的可用提供程序中选择文档。
expo-document-picker
提供对系统 UI 的访问,以便从用户设备上的可用提供程序中选择文档。
¥expo-document-picker
provides access to the system's UI for selecting documents from the available providers on the user's device.
¥Installation
-
npx expo install expo-document-picker
If you are installing this in an existing React Native app (bare workflow), start by installing expo
in your project. Then, follow the additional instructions as mentioned by library's README under "Installation in bare React Native projects" section.
¥Configuration in app.json/app.config.js
如果你在项目中使用配置插件(EAS 构建 或 npx expo run:[android|ios]
),则可以使用其内置的 配置插件 配置 expo-document-picker
。该插件允许你配置无法在运行时设置的各种属性,并且需要构建新的应用二进制文件才能生效。如果你的应用不使用 EAS Build,则你需要手动配置包。
¥You can configure expo-document-picker
using its built-in config plugin if you use config plugins in your project (EAS Build or npx expo run:[android|ios]
). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does not use EAS Build, then you'll need to manually configure the package.
如果要启用 iCloud 存储功能,请按照指定的 配置属性,将 应用配置 文件中的 expo.ios.usesIcloudStorage
键设置为 true
。
¥If you want to enable iCloud storage features, set the expo.ios.usesIcloudStorage
key to true
in the app config file as specified configuration properties.
在本地运行 EAS 构建 将使用 iOS 功能签名 在构建之前启用所需的功能。
¥Running EAS Build locally will use iOS capabilities signing to enable the required capabilities before building.
{
"expo": {
"plugins": [
[
"expo-document-picker",
{
"iCloudContainerEnvironment": "Production"
}
]
]
}
}
Name | Default | Description |
---|---|---|
iCloudContainerEnvironment | undefined | Only for: iOS Sets the iOS |
不使用 EAS 构建 但需要 iCloud 存储功能 的应用必须将 手动配置 和 支持 CloudKit 的 iCloud 服务 作为其打包包标识符。
¥Apps that don't use EAS Build and want iCloud storage features must manually configure the iCloud service with CloudKit support for their bundle identifier.
如果你通过 苹果开发者控制台 启用 iCloud 功能,请务必在 ios/[app]/[app].entitlements
文件中添加以下权利(其中 dev.expo.my-app
表示你的打包包标识符):
¥If you enable the iCloud capability through the Apple Developer Console, then be sure to add the following entitlements in your ios/[app]/[app].entitlements
file (where dev.expo.my-app
if your bundle identifier):
<key>com.apple.developer.icloud-container-identifiers</key>
<array>
<string>iCloud.dev.expo.my-app</string>
</array>
<key>com.apple.developer.icloud-services</key>
<array>
<string>CloudDocuments</string>
</array>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>iCloud.dev.expo.my-app</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)dev.expo.my-app</string>
Apple 开发者控制台还需要创建 iCloud 容器。注册新容器时,系统会要求你提供容器的描述和标识符。你可以在描述下输入任何名称。在标识符下,添加 iCloud.<your_bundle_identifier>
(与 com.apple.developer.icloud-container-identifiers
和 com.apple.developer.ubiquity-container-identifiers
权利使用的值相同)。
¥Apple Developer Console also requires an iCloud Container to be created. When registering the new container, you are asked to provide a description and identifier for the container. You may enter any name under the description. Under the identifier, add iCloud.<your_bundle_identifier>
(same value used for com.apple.developer.icloud-container-identifiers
and com.apple.developer.ubiquity-container-identifiers
entitlements).
expo-file-system
一起使用¥Using with expo-file-system
当 expo-document-picker
与 expo-file-system
一起使用时,文件系统并不总是能够在 expo-document-picker
选择文件后立即读取该文件。
¥When using expo-document-picker
with expo-file-system
, it's not always possible for the file system to read the file immediately after the expo-document-picker
picks it.
要允许 expo-file-system
在选择文件后立即读取文件,你需要确保 copyToCacheDirectory
选项设置为 true
。
¥To allow the expo-file-system
to read the file immediately after it is picked, you'll need to ensure that the copyToCacheDirectory
option is set to true
.
import * as DocumentPicker from 'expo-document-picker';
DocumentPicker.getDocumentAsync(namedParameters)
Name | Type |
---|---|
namedParameters (optional) | DocumentPickerOptions |
Display the system UI for choosing a document. By default, the chosen file is copied to the app's internal cache directory.
Notes for Web: The system UI can only be shown after user activation (e.g. a
Button
press). Therefore, callinggetDocumentAsync
incomponentDidMount
, for example, will not work as intended. Thecancel
event will not be returned in the browser due to platform restrictions and inconsistencies across browsers.
On success returns a promise that fulfils with DocumentPickerResult
object.
If the user cancelled the document picking, the promise resolves to { type: 'cancel' }
.
DocumentPickerAsset
Name | Type | Description |
---|---|---|
file (optional) | File | Only for: Web
|
lastModified (optional) | number | Timestamp of last document modification. |
mimeType (optional) | string | Document MIME type. |
name | string | Document original name. |
size (optional) | number | Document size in bytes. |
uri | string | An URI to the local document file. |
DocumentPickerCanceledResult
Type representing canceled pick result.
Name | Type | Description |
---|---|---|
assets | null | Always |
canceled | true | Always |
output (optional) | null | Only for: Web Always |
DocumentPickerOptions
Name | Type | Description |
---|---|---|
copyToCacheDirectory (optional) | boolean | If Default: true |
multiple (optional) | boolean | Allows multiple files to be selected from the system UI. Default: false |
type (optional) | string | string[] | The MIME type(s) of the documents that are available
to be picked. It also supports wildcards like Default: '*/*' |
DocumentPickerResult
Literal Type: multiple types
Type representing successful and canceled document pick result.
Acceptable values are: DocumentPickerSuccessResult
| DocumentPickerCanceledResult
DocumentPickerSuccessResult
Type representing successful pick result.
Name | Type | Description |
---|---|---|
assets | DocumentPickerAsset[] | An array of picked assets. |
canceled | false | If asset data have been returned this should always be |
output (optional) | FileList | Only for: Web
|