51300520
V2EX  ›  问与答

html 有没办法在文本中嵌入二进制数据?

  •  
  •   51300520 · Aug 19, 2019 · 2610 views
    This topic created in 2476 days ago, the information mentioned may be changed or developed.

    是不是只有 base64 处理再以文本传输这种方式?

    13 replies    2019-08-20 09:08:47 +08:00
    cheneydog
        1
    cheneydog  
       Aug 19, 2019
    你想干嘛?
    OhYee
        2
    OhYee  
       Aug 19, 2019
    把二进制塞到响应的 body 里,或者整一个 websocket 传输都符合你要求把
    Yourshell
        3
    Yourshell  
       Aug 19, 2019
    你转换成 010101010 的格式也行啊
    51300520
        4
    51300520  
    OP
       Aug 19, 2019
    @OhYee 怎么塞到响应的 body 里,就是要这个效果
    51300520
        5
    51300520  
    OP
       Aug 19, 2019
    @cheneydog 有一段文本被压缩过后的二进制,服务端解压消耗太大,想直接发二进制客户端解压
    misaka19000
        6
    misaka19000  
       Aug 19, 2019
    当然可以,我之前做过
    51300520
        7
    51300520  
    OP
       Aug 19, 2019
    @Yourshell 太耗带宽
    51300520
        8
    51300520  
    OP
       Aug 19, 2019
    @misaka19000 怎么实现啊,直接放入文本传输好像不行啊
    misaka19000
        9
    misaka19000  
       Aug 19, 2019
    直接 JS 通过 http 请求去拿数据,后台返回二进制[]byte 就行了
    51300520
        10
    51300520  
    OP
       Aug 19, 2019
    @misaka19000 哦,你是说 ajax 那个
    OhYee
        11
    OhYee  
       Aug 19, 2019
    @51300520
    后端直接把数据写到 body 前端发个请求读一下就行额。

    一般来说后端都可以直接操作 reponse 来实现修改 body 吧,具体看你框架的实现了。

    前端可以用类似这样的方式拿到 body 的二进制数据,当然应该别的框架有更好的方法拿到数据(我不是前端,猜测应该有)
    fetch("https://www.baidu.com").then(data=>data.body.getReader().read().then(d=>console.log(d.value)))
    51300520
        12
    51300520  
    OP
       Aug 19, 2019
    @OhYee
    这种只能单独做一次请求,二进制和纯文本不能混一起,不然要出错,只能第一次请求网页文本,第二次 ajax 请求二进制数据
    msg7086
        13
    msg7086  
       Aug 20, 2019 via Android
    JS 字符串里放编码过的二进制不行么。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 16:22 · PVG 00:22 · LAX 09:22 · JFK 12:22
    ♥ Do have faith in what you're doing.