[英]How to get a UTF8 encoded string from a Base64 encoded string in Javascript?
[英]How to render utf8 encoded blob in VueJS/Javascript
我正在尝试将从数据库获取的二进制Blob转换为可以使用<img>
-Tag呈现的图像。
在我的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
选择一个文件,则会相应地渲染图像。 但是,当我从服务器获取数据时,它应该加载保存的图像。
如果在服务器请求后我在setImage(image)
方法内的console.log(image)
setImage(image)
以下输出:
PNG
IHDRu <ÔFiCCPICC配置文件HWXSÉ[RIh¤ÞD)ҥГ Hl $ PBL” vdQÁµØÐUE×ÈZ±E±÷e],ØPyóú½÷¾¾¾¾ÜÜûçÌÿ̽w®Dj+Î3Ç¥¤2I0t.O&aÅÆÆF(÷Ê»ëQÜ8 ¯Ã±x±§óe¼\\÷ð$Ò|ÞÐn55_¢ÀÖ!!(p(pºW *}âØïLãr¥h6C;³y4oBì“æÄh!à¹|#§ÀÐاÇùÎAN.7s«jQ 9D $äp§ ýíøß#A&FA).J}»©A4»ÅéÑ1ëBüAÄWúCRòDJA±AIA | nH的$ A&S¢£ÔöôQb¸BÐBQ>'A = W @¯æ¬æÅÅà)¥ 为 UAüOȳYjþBgÿm0Y3F-%EC¬±;?!> RåYÙÑ> Ry“ 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
+ GÚ¿ZUWg¡-PÃÈOÎþ+ g£%ÇГ”):æU1ö³-Qj|©5àI%#aDÜÀýð(xê{ããÙ)〜b'G°fìvHWÑ *§Ì'ò〜ÇUÇTtRæRïÒåòY5/(T¼; O2M *Êæ3YðÍ/rļáÃn.®ðø¨^ S =ßÄHçm|挪威岩土÷÷÷的@ãP¨ÝßlöЯpf> O.-PÙpÅ¿PZð2fÀ
如果我将这些内容传递给setImage()
方法,则不会出现任何错误。 已创建Blob URL,但<img>
标记仅显示“空”图像。 等等。 有什么方法可以将这个utf8_encoded Blob转换成有用的东西吗?
我无法发表评论,因此只能发布答案。 如果需要,我将删除。
您可以使用一个库来处理前端的Blob解析。
https://www.npmjs.com/package/blob-util
该库具有内置的ES模块支持,因此应与Vue一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.