@capacitor/filesystem
文件系统API提供了一个类NodeJS的API,用于在设备上处理文件。
安装
npm install @capacitor/filesystem
npx cap sync
Apple隐私清单要求
Apple要求应用开发者现在必须说明API使用的批准原因,以增强用户隐私。截至2024年5月1日,向App Store Connect提交应用时必须包含这些原因。
在应用中使用此特定插件时,必须在/ios/App
中创建PrivacyInfo.xcprivacy
文件或使用VS Code扩展生成它,并指定使用原因。
有关如何执行此操作的详细步骤,请参阅Capacitor文档。
对于此插件,必需的字典键是NSPrivacyAccessedAPICategoryFileTimestamp,推荐的原因是C617.1。
示例PrivacyInfo.xcprivacy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<!-- 如果PrivacyInfo文件已存在,请将此字典条目添加到数组中 -->
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
</array>
</dict>
</plist>
从downloadFile迁移到文件传输插件
自版本7.1.0起,文件系统插件中的downloadFile
功能已被弃用,推荐使用新的@capacitor/file-transfer插件。
安装文件传输插件
npm install @capacitor/file-transfer
npx cap sync
迁移示例
之前(使用文件系统插件):
import { Filesystem, Directory } from '@capacitor/filesystem';
await Filesystem.downloadFile({
url: 'https://example.com/file.pdf',
path: 'downloaded-file.pdf',
directory: Directory.Documents,
progress: true,
});
// 进度事件
Filesystem.addListener('progress', (progress) => {
console.log(`已下载 ${progress.bytes} / ${progress.contentLength}`);
});
之后(使用文件传输插件):
import { FileTransfer } from '@capacitor/file-transfer';
import { Filesystem, Directory } from '@capacitor/filesystem';
// 首先使用Filesystem获取完整文件路径
const fileInfo = await Filesystem.getUri({
directory: Directory.Documents,
path: 'downloaded-file.pdf',
});
// 然后使用文件传输插件下载
await FileTransfer.downloadFile({
url: 'https://example.com/file.pdf',
path: fileInfo.uri,
progress: true,
});
// 进度事件
FileTransfer.addListener('progress', (progress) => {
console.log(`已下载 ${progress.bytes} / ${progress.contentLength}`);
});