iT邦幫忙

0

js base64字串

請問各位大神,我用js的FileReader去讀檔,然後取出file的base64,但是好像因為異步的關係?我可以console出file的base64卻無法使用,用它時console出來的結果也是會顯示,只是要去點開它(value below was evaluated just now),要如何才能使用base64的值?
avatar

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2018-11-12 11:49:10 檢舉
程式碼貼一下啦...這樣很難知道你問題出在哪裡XD
小魚 iT邦大師 1 級 ‧ 2018-11-12 11:53:19 檢舉
可能要寫在onload事件中
淺水員 iT邦大師 6 級 ‧ 2018-11-12 12:02:57 檢舉
來猜看看:我猜是檔案很大,所以字串很長。在瀏覽器的 console 中沒有一次全部顯示。當點擊 log 要顯示全部時,因為資料過多卡住的感覺。
火爆浪子 iT邦研究生 1 級 ‧ 2018-11-12 12:23:19 檢舉
base64 不太好用~
froce iT邦大師 1 級 ‧ 2018-11-12 13:43:14 檢舉
說個無關的:
extension 那樣取出來的不一定是副檔名喔。
base64只是一個字串值。你需要用其它的方式來讓瀏覽器去懂的這是什麼東西。
其實像是img標簽,還可以用data的方式來告知這是一段內部資料。瀏覽器就會自動去載入處理成圖片瀏覽的方式。

如果是其它的東西,因為html標簽中並沒針對非圖片式的讀取方式。一般還是要利用一下後端程式讀取後,去宣告標頭為什麼讓瀏覽器去應用處理。
fillano iT邦超人 1 級 ‧ 2018-11-12 16:02:20 檢舉
加上Promise來解決異步問題看看。Array.prototype.map是同步的函數,它返回時,base64應該還沒真的取到值。
coder iT邦新手 5 級 ‧ 2018-11-12 17:27:08 檢舉
感謝各位的高見,最後是用異步的方式解決,等到base64真的有值時,才會push到array裡
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答