@capacitor/file-transfer
文件传输 API 提供下载和上传文件的机制。
安装
npm install @capacitor/file-transfer
npx cap sync
示例
下载
import { FileTransfer } from '@capacitor/file-transfer';
import { Filesystem, Directory } from '@capacitor/filesystem';
// 首先使用 Filesystem 获取完整文件路径
const fileInfo = await Filesystem.getUri({
directory: Directory.Data,
path: 'downloaded-file.pdf'
});
try {
// 然后使用 FileTransfer 插件下载
await FileTransfer.downloadFile({
url: 'https://example.com/file.pdf',
path: fileInfo.uri,
progress: true
});
} catch(error) {
if (error.code === 'OS-PLUG-FLTR-0010') {
// HTTP 错误 - 有关 `errorData` 中可用字段的详细信息,请参见 `FileTransferError`
let errorData = error.data;
this.showError('上传失败: ' + errorData.httpStatus + '; ' + errorData.body);
} else {
// 其他错误 - 使用 `error.code` 和 `error.message` 获取更多信息。
this.showError('上传失败: ' + error.code + '; ' + error.message);
}
}
// 进度事件
FileTransfer.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.Cache,
path: 'image_upload.png'
});
try {
// 然后使用 FileTransfer 插件上传
const result = await FileTransfer.uploadFile({
url: 'https://example.com/upload_api',
path: fileInfo.uri,
chunkedMode: true,
headers: {
// 上传默认使用 `multipart/form-data`。
// 如果要避免这种情况,可以显式设置 'Content-Type' 标头。
'Content-Type': 'application/octet-stream',
},
progress: false
});
// 从结果中获取服务器响应和其他信息 - 参见 `UploadFileResult` 接口
} catch(error) {
if (error.code === 'OS-PLUG-FLTR-0010') {
// HTTP 错误 - 有关 `errorData` 中可用字段的详细信息,请参见 `FileTransferError`
let errorData = error.data;
this.showError('上传失败: ' + errorData.httpStatus + '; ' + errorData.body);
} else {
// 其他错误 - 使用 `error.code` 和 `error.message` 获取更多信息。
this.showError('上传失败: ' + error.code + '; ' + error.message);
}
}
API
注意:某些输入选项来自 @capacitor/core 中的 HttpOptions,但该插件不使用 HttpOptions 的所有参数。使用的参数在下面记录。
有关现有错误代码的列表,请参见错误。
downloadFile(...)
downloadFile(options: DownloadFileOptions) => Promise<DownloadFileResult>
向服务器执行 HTTP 请求并将文件下载到指定的目标。
如果服务器返回 HTTP 错误(例如 404、500 等),promise 将被拒绝。
要在 Android 和 iOS 上运行时获取有关 HTTP 错误响应的信息(不适用于 Web),请使用 error.data 属性中可用的FileTransferError 接口。
| 参数 | 类型 |
|---|---|
options | |
返回:
Promise<DownloadFileResult>
自: 1.0.0
uploadFile(...)
uploadFile(options: UploadFileOptions) => Promise<UploadFileResult>