V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
siluplsy
V2EX  ›  Python

为什么 gradio 前端在事件参数传 Uint8Array,后端收到的数据却是 Dictionary

  •  
  •   siluplsy · 123 天前 · 1533 次点击
    这是一个创建于 123 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 类型的数据呢?
    
    8 条回复    2024-07-23 17:34:45 +08:00
    MossFox
        1
    MossFox  
       123 天前
    Uint8Array 转 JSON 就是这样。

    Uint8Array(3) [ 114, 51, 4 ]
    > {"0":114,"1":51,"2":4}

    要传二进制数据的话,能序列化在 JSON 中的只有字符串类型。如果必须在某个字段给二进制数据,用 base64 吧。后端收到的时候转回去就可以。
    siluplsy
        2
    siluplsy  
    OP
       123 天前
    @MossFox 因为是传的视频数据,用 base64 是不是太慢了。。。
    codehz
        3
    codehz  
       123 天前
    所以是什么协议发送的呢,怎么发的,又是怎么接收的
    siluplsy
        4
    siluplsy  
    OP
       123 天前
    @codehz 其实就是读本地的一个 mp4, 剪一小段出来写入磁盘。没有涉及网络传输
    renmu
        5
    renmu  
       123 天前 via Android
    试试用 formdata 直接传文件呢
    zhongzhaoguo
        6
    zhongzhaoguo  
       122 天前
    你的 js 是怎么传输数据给 Python 的
    lisxour
        7
    lisxour  
       121 天前
    Uint8Array 转成 Blob 再上传应该就是 bytes 吧
    siluplsy
        8
    siluplsy  
    OP
       121 天前
    好像 gradio 在设计上就是用 json 来交换前后端数据的,看来只能这样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3415 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.