TransferFile
API_LEVEL
3.0开始支持,API 兼容性请参考 API_LEVEL。
文件传输。
方法
getInbox
获取接收文件对象
getInbox(): Inbox
Inbox
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| getNextFile | () => FileObject | 返回 FileObject 接收文件对象 | 3.0 |
| on | (eventName: InboxEventName, callback: () => void) => void | 监听事件,事件名称参考 InboxEventName | 3.0 |
FileObject
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| sessionId | number | 传输文件的会话标识 | 3.0 |
| fileName | string | 文件名 | 3.0 |
| filePath | string | 文件路径 | 3.0 |
| params | object | 用户传递参数 | 3.0 |
| fileSize | number | 传输文件大小 | 3.0 |
| readyState | ReceiveFileState | 接收文件的状态值,见 ReceiveFileState | 3.0 |
| cancel | () => void | 取消传输文件任务 | 3.0 |
| on | (eventName: FileEventName, callback: ChangeCallback|ProgressCallback) => void | 监听文件传输任务事件,事件名参考 FileEventName | 3.0 |
InboxEventName
| 值 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| NEWFILE | string | 刚接收到文件的事件 | 3.0 |
| FILE | string | 完成接收文件的事件 | 3.0 |
ReceiveFileState
| 值 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| pending | string | 等待 | 3.0 |
| transferring | string | 传输中 | 3.0 |
| transferred | string | 传输完成 | 3.0 |
| error | string | 错误 | 3.0 |
| canceled | string | 取消 | 3.0 |
FileEventName
| 值 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| change | string | 当 readyState 转变状态时候发生的事件名,对应 ChangeCallback 回调函数 | 3.0 |
| progress | string | 文件传输进度发生变化时的事件,对应 ProgressCallback 回调函数 | 3.0 |
ChangeCallback
| 类型 | 说明 |
|---|---|
(event: ChangeEvent) => void | 当 readyState 转变状态时候发生的事件回调函数 |
ChangeEvent
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| type | 'readyStateChanged' | 事件类型,值为 readyStateChanged 字符串 | 3.0 |
| date | ChangeEventData | 事件数据对象,类型见 ChangeEventData | 3.0 |
| timestamp | number | 事件发生时的 UTC 时间戳,单位毫秒 | 3.0 |
ChangeEventData
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| readyState | string | 传输文件任务状态 | 3.0 |
ProgressCallback
| 类型 | 说明 |
|---|---|
(event: ProgressEvent) => void | 当文件传输进度变化时的事件回调函数 |
ProgressEvent
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| type | 'progress' | 事件类型,值为 progress 字符串 | 3.0 |
| date | ProgressEventData | 事件数据对象,类型见 ProgressEventData | 3.0 |
| timestamp | number | 事件发生时的 UTC 时间戳 | 3.0 |
ProgressEventData
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| fileSize | number | 文件大小,单位字节 | 3.0 |
| loadedSize | number | 已经传输 的文件大小,单位字节 | 3.0 |
getOutbox
获取发送文件对象
getOutbox(): Outbox
Outbox
| 属性 | 类型 | 说明 | API_LEVEL |
|---|---|---|---|
| enqueueFile | (fileName: string, params?: object) => getInbox.FileObject | 返回 FileObject 文件发送对象,fileName 为文件路径,params 则是自定义文件传输对象,在接收端的 FileObject 中获取,getInbox.FileObject 类型参考上文 | 3.0 |
代码示例
// Receiving File
import TransferFile from "@zos/ble/TransferFile"
const transferFile = new TransferFile()
const inbox = transferFile.getInbox()
Page({
onInit() {
inbox.on('NEWFILE', function() {
const fileObject = inbox.getNextFile()
fileObject.on('progress', (event) => {
console.log("progress total size", event.data.fileSize)
console.log("progress total size", event.data.loadedSize)
})
fileObject.on('change', (event) => {
if (event.data.readyState === 'transferred') {
console.log('transfered file success')
} else (event.data.readyState === 'error') {
console.log('error')
}
})
})
}
})
// Send File
import TransferFile from "@zos/ble/TransferFile"
const transferFile = new TransferFile()
const outbox = transferFile.getOutbox()
Page({
onInit() {
const fileObject = outbox.enqueueFile("assets://logo.png", { test: 1})
fileObject.on('progress', (event) => {
console.log("progress total size", event.data.fileSize)
console.log("progress total size", event.data.loadedSize)
})
file.on('change', (event) => {
if (event.data.readyState === 'transferred') {
console.log('transfered file success')
} else (event.data.readyState === 'error') {
console.log('error')
}
})
}
})