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')
}
})
}
})