国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端將base64圖片轉(zhuǎn)換成file文件

這篇具有很好參考價(jià)值的文章主要介紹了前端將base64圖片轉(zhuǎn)換成file文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、base64轉(zhuǎn)成file具體代碼
  // base64圖片轉(zhuǎn)file的方法(base64圖片, 設(shè)置生成file的文件名)
  function base64ToFile(base64, fileName) {
      // 將base64按照 , 進(jìn)行分割 將前綴  與后續(xù)內(nèi)容分隔開
      let data = base64.split(',');
      // 利用正則表達(dá)式 從前綴中獲取圖片的類型信息(image/png、image/jpeg、image/webp等)
      let type = data[0].match(/:(.*?);/)[1];
      // 從圖片的類型信息中 獲取具體的文件格式后綴(png、jpeg、webp)
      let suffix = type.split('/')[1];
      // 使用atob()對(duì)base64數(shù)據(jù)進(jìn)行解碼  結(jié)果是一個(gè)文件數(shù)據(jù)流 以字符串的格式輸出
      const bstr = window.atob(data[1]);
      // 獲取解碼結(jié)果字符串的長度
      let n = bstr.length
      // 根據(jù)解碼結(jié)果字符串的長度創(chuàng)建一個(gè)等長的整形數(shù)字?jǐn)?shù)組
      // 但在創(chuàng)建時(shí) 所有元素初始值都為 0
      const u8arr = new Uint8Array(n)
      // 將整形數(shù)組的每個(gè)元素填充為解碼結(jié)果字符串對(duì)應(yīng)位置字符的UTF-16 編碼單元
      while (n--) {
        // charCodeAt():獲取給定索引處字符對(duì)應(yīng)的 UTF-16 代碼單元
        u8arr[n] = bstr.charCodeAt(n)
      }
      // 利用構(gòu)造函數(shù)創(chuàng)建File文件對(duì)象
      // new File(bits, name, options)
      const file =  new File([u8arr], `${fileName}.${suffix}`, {
        type: type
      })
      // 將File文件對(duì)象返回給方法的調(diào)用者
      return file;
  }

// 調(diào)用方法 此時(shí)的base64是初始file轉(zhuǎn)換的
const file = base64ToFile(base64,'base64轉(zhuǎn)file生成的文件')
console.log('base64轉(zhuǎn)回file的---',file);
// 將轉(zhuǎn)換后獲得的file文件顯示在頁面的img元素上
document.querySelector('#img').src = window.webkitURL.createObjectURL(file)
文件轉(zhuǎn)換過程:

base64轉(zhuǎn)file,前端基礎(chǔ),前端,javascript

2、代碼解析

? 該方法涉及知識(shí)點(diǎn)較多,首先因?yàn)閎ase64的前綴信息部分與文件內(nèi)容部分是通過,進(jìn)行連接的,data:image/***;base64(前綴信息),xxxxx(文件內(nèi)容),所以利用split()方法對(duì)base64進(jìn)行分割,將前綴文件信息,與文件內(nèi)容分隔開。得到文件前綴信息后,我們就可以利用string.match()方法結(jié)合正則表達(dá)式,從前綴中獲取到文件的類型信息(image/png、image/jpeg、image/webp)以及具體的格式后綴(png、jpeg、webp),保存這些信息,在創(chuàng)建file文件時(shí)使用。

? 接下來我們要對(duì)文件內(nèi)容部分進(jìn)行處理,借助window.atob()方法對(duì)base64文件數(shù)據(jù)進(jìn)行解碼,獲取原來的文件數(shù)據(jù)流信息,但是以字符串的格式輸出。然后利用new Uint8Array(length)創(chuàng)建一個(gè)與文件數(shù)據(jù)流字符串長度相同的8位無符號(hào)的整型數(shù)字?jǐn)?shù)組,通過該方法創(chuàng)建的整形數(shù)組,所有元素初始值都為0。再通過while循環(huán)將剛才創(chuàng)建的整形數(shù)組中的元素,按照索引替換成文件數(shù)據(jù)流字串符中對(duì)應(yīng)位置上字符的 UTF-16 代碼單元,string.charCodeAt(index)可以獲取字符串對(duì)應(yīng)index位置字符的 UTF-16 代碼單元,值是位于0~65535之間的整數(shù)數(shù)字。

? 最后我們通過File(bits, name, options)構(gòu)造函數(shù),傳入對(duì)應(yīng)的參數(shù)創(chuàng)建一個(gè)新的file對(duì)象后,返回給方法的調(diào)用者。至此,完成了base64到file文件的轉(zhuǎn)換。

3、base64

? 一個(gè)完整的base64圖片,包含兩部分信息的,一部分是文件前綴信息,一部分是表示文件內(nèi)容信息,例如:data:image/***(表示文件的類型);base64(表示格式),xxxxx(表示文件內(nèi)容)。我們?cè)赽ase64轉(zhuǎn)換為file的過程中,只需要對(duì)文件內(nèi)容信息進(jìn)行轉(zhuǎn)換即可,但轉(zhuǎn)換后的file文件類型屬性,需要通過文件前綴信息來決定。

紅線標(biāo)注部分為文件前綴信息,其余部分為文件內(nèi)容:

base64轉(zhuǎn)file,前端基礎(chǔ),前端,javascript

4、window.atob()window.btoa()

? window.btoa()方法可以將一個(gè)二進(jìn)制字符串進(jìn)行編碼為base64編碼的ASCII 字符串。我們可以使用這個(gè)方法對(duì)可能遇到通信問題的字符串進(jìn)行編碼處理,但是有一點(diǎn)要注意:該方法不能對(duì)中文字符進(jìn)行編碼處理,只能對(duì)英文字母、英文符號(hào)和數(shù)字進(jìn)行編碼處理。

base64轉(zhuǎn)file,前端基礎(chǔ),前端,javascript

? window.atob()方法可以對(duì)經(jīng)過base64編碼的字符串進(jìn)行解碼處理,可以將window.btoa()編碼后的數(shù)據(jù),進(jìn)行還原;也可以將bsae64格式的文件,解碼成原本的文件數(shù)據(jù)流信息。

base64轉(zhuǎn)file,前端基礎(chǔ),前端,javascript

注: window.atob()window.btoa()兼容IE9以上瀏覽器。

如果想要實(shí)現(xiàn)對(duì)中文字符的編碼和解碼處理,則需要結(jié)合encodeURIComponent()decodeURIComponent()方法:

編碼的過程: 中文字符 —> 先encodeURI —> 再btoa編碼
解碼的過程: 先atob解碼 —> 再decodeURI —> 中文字符

5、File()

? File(bits, name[, options])方法是File對(duì)象的構(gòu)造函數(shù),擁有兩個(gè)必填參數(shù)和一個(gè)可選參數(shù):

? 第一個(gè)參數(shù)bits(必填),表示文件的內(nèi)容,可以是包含ArrayBuffer,ArrayBufferView,Blob,或者 DOMString 對(duì)象的 Array ,以及任何這些對(duì)象的組合;

? 第二個(gè)參數(shù)name(必填),表示創(chuàng)建的file對(duì)象的name屬性,也就是文件的名字。

? 第三個(gè)參數(shù)是options(可選),是一個(gè)對(duì)象格式的參數(shù),表示文件的可選屬性,可選屬性有兩條:① type:字符串?dāng)?shù)據(jù),表示文件的類型(image/png、image/jpeg、image/webp等),默認(rèn)值為""。 ② lastModified:數(shù)值型數(shù)據(jù),表示文件最后修改時(shí)間的Unix時(shí)間戳,默認(rèn)值為Data.now()。

6、相關(guān)文檔

前端FileReader對(duì)象實(shí)現(xiàn)圖片file文件轉(zhuǎn)base64

Base64

atob()

Uint8Array

match()

chartCodeAt()

File()文章來源地址http://www.zghlxwxcb.cn/news/detail-808112.html

到了這里,關(guān)于前端將base64圖片轉(zhuǎn)換成file文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JS】前端base64轉(zhuǎn)圖片F(xiàn)ile對(duì)象

    【JS】前端base64轉(zhuǎn)圖片F(xiàn)ile對(duì)象

    base64ToFile.js

    2024年02月05日
    瀏覽(27)
  • 前端 base64與圖片相互轉(zhuǎn)換

    前端 base64與圖片相互轉(zhuǎn)換

    base64轉(zhuǎn)圖片 如下圖:(后端返回的數(shù)據(jù)) base64轉(zhuǎn)換圖片文件 圖片(url)轉(zhuǎn)換base64 便捷的圖片轉(zhuǎn)化base64 利用 Chrome 瀏覽器,在 chrome 下新建一個(gè)窗口,然后把要轉(zhuǎn)化的圖片直接拖入瀏覽器,打開控制臺(tái),點(diǎn) Source,如下圖所示,點(diǎn)擊圖片,右側(cè)就會(huì)顯示該圖片的 base64 編碼

    2024年02月12日
    瀏覽(24)
  • 將html字符串中的base64圖片轉(zhuǎn)換成file并上傳

    目的 解決富文本編輯器中復(fù)制粘貼的圖片 base64 字符串過長導(dǎo)致無法存儲(chǔ)到數(shù)據(jù)庫的問題 思路 通過正則 獲取html字符串中里面的所有圖片 base64 數(shù)組 然后每個(gè)圖片base64 轉(zhuǎn)成file 使用上傳文件的函數(shù) 上傳到服務(wù)器上. 將上傳后獲取到的圖片訪問url 替換成 數(shù)據(jù)里面的 img 的 src

    2024年01月23日
    瀏覽(58)
  • 前端base64轉(zhuǎn)file文件方法

    有這樣一種場(chǎng)景,比如canvas截取部分dom作為圖片,上傳到服務(wù)器,而canvas截取的圖片返回的是base64字符串,而服務(wù)器接收的是file文件。因此我們需要將base64字符串轉(zhuǎn)成file文件,存儲(chǔ)到服務(wù)器中。 方法一:通過new File(),將base64直接轉(zhuǎn)成file文件。 (此方法需要考慮瀏覽器兼容

    2024年02月11日
    瀏覽(27)
  • Base64轉(zhuǎn)二進(jìn)制文件流以及轉(zhuǎn)File、圖片轉(zhuǎn)Base64、二進(jìn)制流轉(zhuǎn)Base64

    1、Base64轉(zhuǎn)二進(jìn)制文件流 方法一: 調(diào)用示例: 方法二: 調(diào)用示例: ?2、Base64轉(zhuǎn)File 方法一: 調(diào)用示例: 方法二: 調(diào)用示例: 補(bǔ)充: 3、圖片轉(zhuǎn)Base64 調(diào)用示例: 4、二進(jìn)制流轉(zhuǎn)Base64 方法一: 調(diào)用示例: 方法二: 調(diào)用示例: 5、補(bǔ)充 5.1?atob() atob() ?對(duì)經(jīng)過 base-64 編碼的字符

    2024年02月04日
    瀏覽(95)
  • js - 圖片base64轉(zhuǎn)file文件的兩種方式

    js - 圖片base64轉(zhuǎn)file文件的兩種方式

    最近項(xiàng)目中需要實(shí)現(xiàn)把圖片的base64編碼轉(zhuǎn)成file文件的功能,然后再上傳至服務(wù)器。 1.通過new File()將base64轉(zhuǎn)換成file文件,此方式需考慮瀏覽器兼容問題 2.先將base64轉(zhuǎn)換成blob,再將blob轉(zhuǎn)換成file文件,此方法不存在瀏覽器不兼容問題 vue中配合vant的uploader上傳組件使用案例: 打

    2024年02月14日
    瀏覽(32)
  • 將圖片轉(zhuǎn)換成Base64格式存入數(shù)據(jù)庫以及在前端頁面展示

    這個(gè)示例接口假設(shè)已經(jīng)有了一個(gè)數(shù)據(jù)庫連接池,并且已經(jīng)注入或初始化了數(shù)據(jù)源。這個(gè)接口的功能是讀取指定路徑的圖片文件,將其轉(zhuǎn)換為Base64編碼字符串,然后將其存入數(shù)據(jù)庫中。可以通過調(diào)用 saveImageToDB 方法來實(shí)現(xiàn)這個(gè)功能。調(diào)用該方法時(shí)需要傳入要存儲(chǔ)的圖片文件的路

    2024年02月16日
    瀏覽(22)
  • uniapp圖片轉(zhuǎn)base64及JS各文件類型相互轉(zhuǎn)換

    uniapp圖片轉(zhuǎn)base64及JS各文件類型相互轉(zhuǎn)換

    App H5 微信小程序 快手小程序 京東小程序 √ √ √ √ √ 功能限制主要在arrayBufferToBase64 微信小程序 字節(jié)跳動(dòng)小程序 QQ小程序 √ √ √ 功能限制主要在getFileSystemManager H5 √ 功能限制主要在FileReader實(shí)例上 在 JavaScript 中的經(jīng)常用到的二進(jìn)制的格式有三種: ArrayBuffer:用來表示通

    2024年02月08日
    瀏覽(20)
  • JS前端讀取本地上傳的File文件對(duì)象內(nèi)容(包括Base64、text、JSON、Blob、ArrayBuffer等類型文件)

    FileReader.readAsArrayBuffer() - Web API 接口參考 | MDN FileReader 接口提供的 readAsArrayBuffer() 方法用于啟動(dòng)讀取指定的 Blob 或 File 內(nèi)容。當(dāng)讀取操作完成時(shí),readyState 變成 DONE(已完成),并觸發(fā) loadend 事件,同時(shí) result 屬性中將包含一個(gè) ArrayBuffer 對(duì)象以表示所讀取文件的數(shù)據(jù)。 https://

    2024年02月15日
    瀏覽(60)
  • uni-app 支持 app端, h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64

    uni-app 支持 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64,下方是插件市場(chǎng)的地址 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64 - DCloud 插件市場(chǎng) https://ext.dcloud.net.cn/plugin?id=13926

    2024年02月13日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包