相册传输进度
回调格式
iMouse投屏 相册管理(/plugin/imcast/photo/upload / /plugin/imcast/photo/down)传输过程中,
内核按字节推送进度,给界面画进度条用。同一次传输会推很多条:百分比每变一次推一条,
百分比没变但隔了 200 毫秒也推一条;开始时推一条 0%,结束(不管成败)再推一条最终值。
功能号 imcast_progress
{
"data": {
"id": "EB9F2FE5",
"dir": "up",
"file": "imcast_red.png",
"index": 1,
"total": 2,
"done": 1048576,
"size": 5242880,
"percent": 20
},
"status": 200,
"message": "成功",
"msgid": 0,
"fun": "imcast_progress"
}
- data 字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| id | 字符串 | 设备id |
| dir | 字符串 | up 上传(电脑 → 手机);down 下载(手机 → 电脑) |
| file | 字符串 | 上传:第一个文件的文件名(一次 multipart 带全部文件,进度按整个请求体算);下载:图片 id(文件名要等响应头才知道) |
| index | 整数 | 上传:本次上传的文件数;下载:第几张 |
| total | 整数 | 上传:本次上传的文件数;下载:共几张 |
| done | 整数 | 已传字节 |
| size | 整数 | 总字节。下载时手机端没给 Content-Length 就是 0 |
| percent | 整数 | 0~100;size 为 0 时是 -1,界面按"进行中"画 |
超时
上传 / 下载没有"总时长"上限,用的是请求里的 outtime(默认 15 秒)作每一步等待的上限:
连接、发完请求等响应、每一次收数据。数据在流动就不会超时,只有卡住不动超过 outtime 才返回 71。
outtime 不用按文件大小调,传 30 秒左右即可。
两步会随文件大小、手机状态变长,outtime 太小时先撞到的是它们:上传发完之后 app 把图存进相册再回响应;
下载时 app 先从相册取出原图才发第一个字节,照片在 iCloud 上没下载到本机时这一步可能很久。
⚠️ 调用方自己等内核返回的时限要单独算,别绑在 outtime 上:outtime 是内核每一步的上限,
几个大文件加起来的总时长可以远超它。建议给足时间(比如一小时),靠本回调看进度。