JS 中传 Uint8Array:
var blob = new Uint8Array(await videoBlob.arrayBuffer())
handle_change_AB_time([dragStart, dragEnd, blob])
Python 中收到的实际是一个字典:
def change_ABT(evt: gr.EventData):
[ begintime, endtime, videoData ] = evt._data
videoBytes = bytes(list(videoData.values()))
这种转换应该会有性能损失吧?怎样在 Python 直接能收到 bytes 类型的数据呢?
1
MossFox 154 天前
Uint8Array 转 JSON 就是这样。
Uint8Array(3) [ 114, 51, 4 ] > {"0":114,"1":51,"2":4} 要传二进制数据的话,能序列化在 JSON 中的只有字符串类型。如果必须在某个字段给二进制数据,用 base64 吧。后端收到的时候转回去就可以。 |
3
codehz 154 天前
所以是什么协议发送的呢,怎么发的,又是怎么接收的
|
5
renmu 154 天前 via Android
试试用 formdata 直接传文件呢
|
6
zhongzhaoguo 153 天前
你的 js 是怎么传输数据给 Python 的
|
7
lisxour 152 天前
Uint8Array 转成 Blob 再上传应该就是 bytes 吧
|
8
siluplsy OP 好像 gradio 在设计上就是用 json 来交换前后端数据的,看来只能这样了
|