关于前端显示 blob 图像的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
AerithLoveMe

关于前端显示 blob 图像的问题

  •  
  •   AerithLoveMe Sep 9, 2021 1827 views
    This topic created in 1693 days ago, the information mentioned may be changed or developed.
    我目前是通过后端返回图片字节流,前端接收的是字符串,当我把字符串转 blob 并转换为图像展示的时候出错了,一直显示不出来,blob url 例如:blob:http://127.0.0.1:5500/27903d9a-863c-4170-b4c6-8bd1f335b136,字节流例如:'PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x07\x00\x00\x04\b\x03\x00\x00\x00V$\x00\x00\x03\x00PLTE\r',blob 打开的链接也都是乱码,请问我哪一步出错了?
    10 replies    2021-10-19 15:39:29 +08:00
    randyo
        2
    randyo  
       Sep 10, 2021 via Android
    blob 的 type 是不是应该用图片的
    shakaraka
        3
    shakaraka  
    PRO
       Sep 10, 2021
    图片你用 text/plain ???
    seki
        4
    seki  
       Sep 10, 2021
    object url 是用来下载的
    img src 要用 bas64 的 data: 协议
    autoxbc
        5
    autoxbc  
       Sep 10, 2021   1
    如果不给 axios 设置 responseType,那么 res.data 的类型是 string,这里是文本化的字节流,也就是乱码,后续怎么处理都不能用

    axios.post 传递第三个参数 { responseType: 'blob' },这样返回值是 Blob 对象,不需要再手动构造
    axios.post('http://localhost:9080/compress/png', formData , { responseType: 'blob' } )
    .then( res => {
    const blob = res.data ;
    const url = URL.createObjectURL(blob);
    ......
    } );

    以及,如果因为某种操作,返回了符合 new Blob 构造的输入值,type 参数也应该是 image/png,而不是 text/plain
    AerithLoveMe
        6
    AerithLoveMe  
    OP
       Sep 10, 2021
    @autoxbc 谢谢。成功了!
    Quarter
        7
    Quarter  
       Sep 10, 2021 via iPhone
    mime type 不能随便设置
    Gaays
        8
    Gaays  
       Oct 18, 2021
    @autoxbc 你好我这里也遇到这个问题了,我按照你的方法设置但是不起效果,报错 TypeError: Failed to execute 'createObjectURL' on 'URL',按照网上说的都试过,但是还是无法解决,请问方便回答一下怎么处理吗,谢谢
    autoxbc
        9
    autoxbc  
       Oct 18, 2021
    @Gaays #8 错误信息说 URL 上没有 createObjectURL 方法,可能是
    1. 浏览器过旧,没有 URL 对象,是 IE11?
    2. 拼写错误,检查一下代码
    3. 某些上游代码修改了 URL 对象

    可以看看直接在控制台输入 URL.createObjectURL 并回车,正常情况应该返回一个函数
    Gaays
        10
    Gaays  
       Oct 19, 2021
    @autoxbc 不好意思,问问题没有描述清除,感谢第 3 项的提醒,我今天把可能造成影响的代码全过了一边,发现是 mockjs 的锅
    About     Help     Advertise     Blog     API     FAQ     Solana     983 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 22:16 PVG 06:16 LAX 15:16 JFK 18:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86