@capacitor/file-transfer
FileTransfer API 提供下载和上传文件的机制。
安装
npm install @capacitor/file-transfer@latest-7
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 错误 - 参见 `FileTransferError` 了解 `errorData` 中可用字段的详细信息
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 错误 - 参见 `FileTransferError` 了解 `errorData` 中可用字段的详细信息
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(不适用于 web)上运行时获取关于 HTTP 错误响应的信息,请使用 error.data 属性中可用的 FileTransferError 接口。
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<DownloadFileResult>
起始版本: 1.0.0
uploadFile(...)
uploadFile(options: UploadFileOptions) => Promise<UploadFileResult>
向服务器发送 HTTP 请求以上传文件。
如果服务器返回 HTTP 错误(例如 404、500 等),Promise 将被拒绝。
要在 Android 和 iOS(不适用于 web)上运行时获取关于 HTTP 错误响应的信息,请使用 error.data 属性中可用的 FileTransferError 接口。
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<UploadFileResult>