我正在尝试将从数据库中提取的二进制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转换成有用的东西?
1条答案
按热度按时间xriantvc1#
我不能发表评论,所以不得不发帖作为答复。如果需要的话我会移除。
可以使用库在前端处理blob解析。
https://www.npmjs.com/package/blob-util
该库具有内置的es模块支持,因此可以使用vue开箱即用。