js二進制數據轉圖片


前言

前端上傳圖片,傳到后端,然后后端直接把圖片以image形式存入數據庫,待前端請求時,再從數據庫中取出,傳給前端,邏輯上好像沒什么問題,但是在實際操作過程中,前端獲取到數據后並不能直接使用<img src=res.data/>來顯示圖片

解決辦法

  1. 在請求中,修改參數responseType:"arraybuffer"
    例如:
    a. 使用axios進行修改,axios.get('http://xxxx.xxxx.xxx',{responseType:"arraybuffer"})
    b. 使用xhr進行修改,xhr.responseType = 'arraybuffer'
  2. 修改返回值
    const blob = new Blob([responseData], { type: imageType })
    const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
  3. 引用
    <img src={imageUrl}>

后續

最近又遇到了這個需求,使用上述方法,卻不行,但是相同的代碼,在另一個項目中卻沒有問題、這可快氣死我了,找問題找了好長時間。。。最后,終於發現,這個項目的框架使用了Mock攔截請求,其他方面沒問題,唯獨二進制這塊Mock貌似當時
沒有考慮到這種情況。網上搜“mock 二進制”,發現其他老哥也遇到過、(汗

解決

項目中Mock相關的全部注釋掉。

參考

JavaScript如何轉換二進制數據顯示成圖片
Axios中文說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM