V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Jul 21, 2024 · 2966 views
    This topic created in 646 days ago, the information mentioned may be changed or developed.
    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 replies    2024-07-23 17:34:45 +08:00
    MossFox
        1
    MossFox  
       Jul 21, 2024
    Uint8Array 转 JSON 就是这样。

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

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