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 2024-07-21 12:55:20 +08:00 Uint8Array 转 JSON 就是这样。 Uint8Array(3) [ 114, 51, 4 ] > {"0":114,"1":51,"2":4} 要传二进制数据的话,能序列化在 JSON 中的只有字符串类型。如果必须在某个字段给二进制数据,用 base64 吧。后端收到的时候转回去就可以。 |
![]() | 3 codehz 2024-07-21 13:10:52 +08:00 所以是什么协议发送的呢,怎么发的,又是怎么接收的 |
5 renmu 2024-07-21 13:53:54 +08:00 via Android 试试用 formdata 直接传文件呢 |
![]() | 6 zhongzhaoguo 2024-07-22 08:54:56 +08:00 你的 js 是怎么传输数据给 Python 的 |
![]() | 7 lisxour 2024-07-23 16:07:31 +08:00 Uint8Array 转成 Blob 再上传应该就是 bytes 吧 |
8 siluplsy OP 好像 gradio 在设计上就是用 json 来交换前后端数据的,看来只能这样了 |