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

微信小程序接收二進(jìn)制流文件(圖片預(yù)覽,文件打開)

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序接收二進(jìn)制流文件(圖片預(yù)覽,文件打開)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?下面通過downloadOaFile接口獲取到二進(jìn)制流,即res.data

注意?。?!直接用downloadOaFile獲取的二進(jìn)制流文件在寫入時(shí)會(huì)導(dǎo)致文件損壞,必須在uni.request對(duì)象的屬性中加上

uni.request({responseType: 'arraybuffer',...}) 

如果不加,默認(rèn)是

responseType: 'text'

這一點(diǎn)非常重要,踩了好久的坑,而且這兩點(diǎn)的區(qū)別在network的response中還看不出來,因?yàn)閮烧叩膔es.data看上去都是二進(jìn)制流

注:arraybuffer是js內(nèi)置的類,用于操作二進(jìn)制文件,和blob差不多,所以我感覺也可以將res.data轉(zhuǎn)成arraybuffer,之后再用fs.write寫入

下面是轉(zhuǎn)為的arraybuffer的方案,但是由于沒試過,我也不知道能不能成功

const textEncoder = new TextEncoder();
const arrayBuffer = textEncoder.encode(data).buffer;

const arrayBuffer是一個(gè)arrayBuffer對(duì)象,用buffer方法得到的

注:arraybuffer也可以通過new出來,它就是一段連續(xù)的內(nèi)存空間,但是很神奇居然可以用變量申請(qǐng)內(nèi)存大小如下

const arrayBuffer = new ArrayBuffer(len)//len可以是變量

但是不能直接操作arraybuffer,必須再arraybuffer上建立視圖,從而進(jìn)行寫入和釋放內(nèi)存操作

const dataView = new DataView(arraybuffer);

參考`ArrayBuffer`對(duì)象到底是什么 簡單讀懂 - 掘金

接著用getFileSystemManager將二進(jìn)制流寫成文件

const fs = uni.getFileSystemManager(); //獲取全局唯一的文件管理器

fs.writeFile({...})//將二進(jìn)制流寫成文件

?最后通過文件擴(kuò)展名判斷用uni.previewImage或者wx.openDocument這兩個(gè)api打開圖片還是文件

完整代碼如下文章來源地址http://www.zghlxwxcb.cn/news/detail-564952.html

        let filePath = wx.env.USER_DATA_PATH + "/"+item.storageFileName;
        console.log(1111111111,item)
        downloadOaFile({
          filePath:item.storageFileName,
          fileName:item.storageFileName,
        }).then(res=>{
          const fs = uni.getFileSystemManager(); //獲取全局唯一的文件管理器
          // fs.access({
          //   path: wx.env.USER_DATA_PATH,
          //   success: function(res) {
          //     console.log("臨時(shí)文件目錄已存在",res);
          //   },
          //   fail: function(err) {
          //     console.log("臨時(shí)文件目錄不存在,現(xiàn)在創(chuàng)建目錄",err);
          //     fs.mkdir({
          //       dirPath: wx.env.USER_DATA_PATH,
          //       recursive: true,
          //       success: function(res) {
          //         console.log("創(chuàng)建目錄成功",res);
          //       },
          //       fail: function(err) {
          //         console.log("創(chuàng)建目錄失敗",err);
          //       }
          //     });
          //   }
          // })
          console.log(filePath)
          console.log(typeof filePath)


          fs.writeFile({ // 寫文件
            filePath: filePath, // wx.env.USER_DATA_PATH 指定臨時(shí)文件存入的路徑,后面字符串自定義
            data: res.data,
            encoding: "binary", //二進(jìn)制流文件必須是 binary
            success (res){
              let imgExtName = ['png','jpg']
              console.log("成功寫入文件",res)
              if (imgExtName.indexOf(item.extname)>-1){
                uni.previewImage({
                  current:item.storageFileName,
                  urls:[filePath],
                  success: function (res) {
                    console.log("成功打開圖片",res)
                    console.log(filePath)

                    // setTimeout(()=>{wx.hideLoading()},500)
                  },
                  fail(res){
                    console.log("失敗打開圖片",res);
                  }
                })
              }else{

                wx.openDocument({ // 新開頁面打開文檔
                  fileType:item.extname,
                  filePath: filePath,  //拿上面存入的文件路徑
                  success: function (res) {
                    console.log("成功打開文件")
                    // setTimeout(()=>{wx.hideLoading()},500)
                  },
                  fail(res){
                    console.log("失敗打開文件",res)
                  }
                })
              }

            },
            fail(res){
              console.log("寫文件失敗",res)
            }
        })
      })

到了這里,關(guān)于微信小程序接收二進(jìn)制流文件(圖片預(yù)覽,文件打開)的文章就介紹完了。如果您還想了解更多內(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)文章

  • java圖片轉(zhuǎn)二進(jìn)制流_java將文件轉(zhuǎn)化成二進(jìn)制流

    二進(jìn)制流的主要編碼格式是base64碼。可以在網(wǎng)上找一些在線轉(zhuǎn)base64編碼的網(wǎng)站進(jìn)行嘗試轉(zhuǎn)換。 例如:http://imgbase64.duoshitong.com/然后通過前端展現(xiàn)和下載。 前端顯示二進(jìn)制流圖片(src中放置base64碼及二進(jìn)制流) 前端下載二進(jìn)制流文件(herf中放置base64碼及二進(jìn)制流,download后面放

    2024年02月06日
    瀏覽(35)
  • 后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實(shí)現(xiàn)預(yù)覽圖片以及PDF

    后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實(shí)現(xiàn)預(yù)覽圖片以及PDF

    1、首先預(yù)覽PDF需要 后端 將響應(yīng)頭 Content-Type 設(shè)置為PDF類型 application/pdf ,不能預(yù)覽,會(huì)直接下載 2、 前端 定義接口:并設(shè)置相應(yīng)類型 responseType 為 blob 請(qǐng)求數(shù)據(jù):通過 window.URL.createObjectURL(res) 轉(zhuǎn)成本地預(yù)覽地址, 在通過 window.open() 方法打開轉(zhuǎn)成本地預(yù)覽地址即可預(yù)覽PDF,如下

    2024年02月15日
    瀏覽(38)
  • 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日
    瀏覽(94)
  • Vue 讀取后臺(tái)二進(jìn)制文件流轉(zhuǎn)為圖片顯示

    Vue 讀取后臺(tái)二進(jìn)制文件流轉(zhuǎn)為圖片顯示

    Vue 讀取后臺(tái)二進(jìn)制文件流轉(zhuǎn)為圖片顯示 后臺(tái)返回格式 axios寫法 重點(diǎn) responseType: ‘blob’ , 使用的是res中的data blob 本文章參考 https://huaweicloud.csdn.net/63a56170b878a545459459f2.html

    2024年04月11日
    瀏覽(22)
  • vue 后端返回二進(jìn)制流-前端通過blob對(duì)象下載文件-圖片

    前言 在實(shí)際開發(fā)中我們經(jīng)常會(huì)遇見下載文件的場(chǎng)景,比如下載合同,下載文件 下載文件有2種方式,一種是后端返回二進(jìn)制流,前端通過blob對(duì)象接受根據(jù)不同類型下載 還有一種把地址直接在瀏覽器新窗口打開瀏覽器打開pdf可以預(yù)覽和下載,其他文件直接下載 但不管是那種方

    2024年02月05日
    瀏覽(25)
  • vue3+axios:圖片鏈接轉(zhuǎn)換成二進(jìn)制文件流后并提交服務(wù)器

    vue3+axios:圖片鏈接轉(zhuǎn)換成二進(jìn)制文件流后并提交服務(wù)器

    1、使用Image類創(chuàng)建一個(gè)新的圖片。 2、將圖片轉(zhuǎn)換成base64。 3、將base64圖片使用File類轉(zhuǎn)換成二進(jìn)制文件流 4、將二進(jìn)制文件流使用 FormData類轉(zhuǎn)換成binary類型提交服務(wù)器。 Image類創(chuàng)建一個(gè)新的圖片 圖片轉(zhuǎn)換成base64 base64轉(zhuǎn)換成二進(jìn)制文件流 二進(jìn)制流文件提交到服務(wù)器

    2024年02月15日
    瀏覽(25)
  • 損壞的二進(jìn)制文件會(huì)導(dǎo)致“程序太大而無法放入內(nèi)存”

    損壞的二進(jìn)制文件會(huì)導(dǎo)致“程序太大而無法放入內(nèi)存”

    不知道你是否做過這樣的小實(shí)驗(yàn):將一個(gè)可執(zhí)行文件的頭部寫入一些無效的數(shù)據(jù),或者將一個(gè)根本不是可執(zhí)行文件的大型文件的擴(kuò)展名改為”.exe”,然后執(zhí)行它(警告,請(qǐng)記得先保存好工作文件)。 文件不會(huì)如預(yù)期般那樣執(zhí)行,你會(huì)得到一個(gè)提示:”程序太大而無法裝入到內(nèi)存

    2024年02月09日
    瀏覽(21)
  • uniapp開發(fā)小程序-pc端小程序下載后端接口的二進(jìn)制流文件

    fileName 包含文件名+后綴名,比如 test.png 這種格式 api.DownloadTmtFile 后端接口返回的是文件的二進(jìn)制流 值得注意的是,微信開發(fā)者工具中是測(cè)試不了 wx.saveFileToDisk 的,需要真機(jī)或者體驗(yàn)版測(cè)試

    2024年02月04日
    瀏覽(24)
  • 【前端】WebSocket接收二進(jìn)制數(shù)據(jù)轉(zhuǎn)JSON并解決中文亂碼問題(ArrayBuffer轉(zhuǎn)json)

    【前端】WebSocket接收二進(jìn)制數(shù)據(jù)轉(zhuǎn)JSON并解決中文亂碼問題(ArrayBuffer轉(zhuǎn)json)

    WebSocket與mqtt服務(wù)器通信,接收二進(jìn)制數(shù)據(jù)并將其轉(zhuǎn)為Json使用。一般方式都會(huì)出現(xiàn)中文亂碼問題。

    2024年01月22日
    瀏覽(21)
  • html 二進(jìn)制 blob 給圖片賦值

    1、html 二進(jìn)制流 (非base64),給圖片賦值 ? ? ? ? ? ? var reader = new FileReader(); ? ? ? ? ? ? reader.onload = function (e) { ? ? ? ? ? ? ? var img = document.querySelector(\\\'#canvas_img\\\'); ? ? ? ? ? ? ? img.src = e.target.result; ? ? ? ? ? ? }; ? ? ? ? ? ? // data 二進(jìn)流 ? ? ? ? ? ? reader.readAs

    2023年04月21日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包