如何在vuejs/javascript中呈现utf8编码的blob

nwlls2ji  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(299)

我正在尝试将从数据库中提取的二进制blob转换为可以用 <img> -标签。
在我的laravel后端中,我返回blob/数据如下:

$user = User::find($id);

$user->photo = utf8_encode($user->photo); // $user->photo is saved as blob in MySQL database

return $user;

我使用 utf8_encode 数据以json的形式返回。
在vuejs中,我尝试了以下方法来渲染图像:

<input type="file" @change="onFileSelect">
<img :src="setImage(userdata.photo)">

setImage(image) {
    let objurl = window.URL.createObjectURL(new Blob([image]));

    return objurl;
}

onFileSelect(e) {
    this.userdata.photo = e.target.files[0];
}

如果我在中选择一个文件 input 相应地渲染图像。但是当我从服务器获取数据时,它应该加载保存的图像。
如果我 console.log(image) 内部 setImage(image) 方法在服务器请求之后,我得到以下输出:
巴布亚新几内亚
伊赫德鲁<ôFICCPCC配置文件HWXSé[里赫¤þ(d)ò¥ð"hl$pbl“vdq型áµøðue公司×èz±e±÷e] 哦,øpy公司ºú½÷¾w¾ïüûçìÿì½w­®主持人+îæ三祤2吨o&aåæf级(÷ê»ëqü¯8+¸~ÿ¯¢ãè十±§óe¼\÷ð$ò|þð55号_¢à öâ!(p¦ (pº w*}âøï我ãr¥h6c型;³ y4ob公司ì"æä哦!à ¹|# §àðø§çùîô安.7秒«jq 9d型$äp§ýíøß#a&f公司ä)j}»©à4»åéñ1ëbü一äwúcr公司òd?j公司â±一ïä.|新罕布什尔州$ä&s¢£ôöô问题B¸bðbq>'a=w@¯æ¬æååà)¥ûàãüoè³yj公司þ背景ÿm0!y3f-%ec¬ ±,;>råyùñ>瑞“k}âð ?6)C§öæÊêÅEh5®Ê&D¨yvð¸Êü !nY<Ù¸¨ZøPUíØ%8Q]/Ö!ÉSÏ}-ÉUûãTAN¸Ân ±¬ ^=ÈRÅGKòcTyâéYÜѱª|ðBØ 0j:ÈY@ÔÖÝÔ ©FÂHA&gµe f²研发¯ñ üèç+克 ú¿祖格¡-pîèoî þ+克£%çð"ú):æu1型ö³-qj公司|©5ài%#广告üàýð(十ê{ã>ù~ó'背景°fì甚高频ñcå*§ì'ò~çuçttr公司ærïòåòy5/(吨)¼;200万*êæ3年ðí/rä¼áãn。®ð­­ø¨^s码=ßä小时çm | ngi公司÷÷÷øf级@ãp¨ýß我öð¯pf>o.-pùpå¿pz公司ð二楼à
如果我把那些东西传给我的朋友 setImage() 方法我没有得到任何错误。blob url已创建,但 <img> 标签只显示一个“空”图像。等等。有没有办法把这个utf8\u编码的blob转换成有用的东西?

xriantvc

xriantvc1#

我不能发表评论,所以不得不发帖作为答复。如果需要的话我会移除。
可以使用库在前端处理blob解析。
https://www.npmjs.com/package/blob-util
该库具有内置的es模块支持,因此可以使用vue开箱即用。

相关问题