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

微信小程序預(yù)覽二進(jìn)制流文件

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

開(kāi)發(fā)時(shí)使用調(diào)試基準(zhǔn)庫(kù)版本

微信小程序預(yù)覽二進(jìn)制流文件

需求

在線預(yù)覽doc/xls/xlsx/ppt/txt/pdf 的文件和圖片。

思路

  1. 將后臺(tái)返回的二進(jìn)制流,寫(xiě)入微信的文件管理器。
  2. 打開(kāi)文件。

根據(jù)文件類(lèi)型調(diào)用不同預(yù)覽方法

wx.openDoucument不支持預(yù)覽txt文件。

    bindTapFile: function (e) {
      let currentPage = this;
      let { objectId, name, filetype } = e.currentTarget.dataset.file;
      let fileType = name.split(".").pop().toLowerCase();
      if (
        ["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].includes(fileType)
      ) {
        currentPage.binaryPreview(objectId, name, filetype);
      } else if (["txt"].includes(fileType)) {
        currentPage.downloadFilePreview(objectId, name, filetype, true);
      }
    },

原本寫(xiě)的預(yù)覽方法,安卓不支持

原本都是調(diào)用這個(gè)方法,根據(jù)isTxt判斷是否為文本文件做不同的操作。在安卓真機(jī)調(diào)試發(fā)現(xiàn)打開(kāi)失敗,說(shuō)找不到路徑。

    downloadFilePreview: function (objectId, name, type, isTxt = false) {
      let currentPage = this;
      let filePath = `${wx.env.USER_DATA_PATH}/${name}`;
      ui.showLoading("加載中……");
      wx.downloadFile({
        url: `${app.globalData.loscamUrl}...`,
        filePath: filePath, // 自定義文件的名稱(chēng)
        method: "GET",
        header: {
          Authorization: "Bearer " + token.access_token,
        },
        success(res) {
          let Path = res.filePath;
          let fs = wx.getFileSystemManager();
          fs.getFileInfo({
            filePath: Path,
            success: (f) => {
              fs.saveFile({
                tempFilePath: Path ?? filePath,
                filePath: filePath,
              });
              if (isTxt) {
                let textContent = fs.readFileSync(filePath, "utf-8");
                currentPage.goTxtPage(name, textContent);
              } else {
                // 現(xiàn)api支持doc docx xls xlsx ppt pptx pdf
                wx.openDocument({
                  filePath: Path ?? filePath,
                  showMenu: true,
                  fileType: type,
                  success: function (res) {
                    console.log("打開(kāi)文檔成功");
                  },
                  fail: function (err) {
                    console.log("打開(kāi)文檔失敗:", err);
                  },
                });
              }
            },
          });
        },
        complete() {
          setTimeout(() => {
            ui.hideLoading();
          }, 1000);
        },
      });
    },

蘋(píng)果、安卓真機(jī)均可預(yù)覽文件

    binaryPreview: function (objectId, name, type) {
      let filePath = `${wx.env.USER_DATA_PATH}/${name}`;
      ui.showLoading("加載中……");
      wx.request({
        url: `${app.globalData.loscamUrl}...`,
        header: {
          Authorization: "Bearer " + token.access_token,
        },
        method: "GET",
        responseType: "arraybuffer", //此處是請(qǐng)求文件流,必須帶入的屬性
        success: (rest) => {
          if (rest.statusCode === 200) {
            const fs = wx.getFileSystemManager(); //獲取全局唯一的文件管理器
            fs.writeFile({
              // 寫(xiě)文件
              filePath: filePath,
              data: rest.data,
              encoding: "binary",
              success(res) {
                wx.openDocument({
                  filePath: filePath, //拿上面存入的文件路徑
                  showMenu: true,
                  success: function (res) {
                    console.log("open success");
                  },
                  fail: function (err) {
                    console.log("open fail", err);
                  },
                });
              },
            });
          }
        },
        complete() {
          setTimeout(() => {
            ui.hideLoading();
          }, 1000);
        },
      });
    },

預(yù)覽圖片

縮略圖預(yù)覽(增加請(qǐng)求頭部)

效果圖
微信小程序預(yù)覽二進(jìn)制流文件
代碼實(shí)現(xiàn)

    downloadImgToTemUrl(imgObjectId, imgName) {
      let currentPage = this;
      wx.downloadFile({
        url: `${app.globalData.loscamUrl}/file/downloadfile?fileUrl=${imgObjectId}`,
        filePath: `${wx.env.USER_DATA_PATH}/${encodeURIComponent(imgName)}`, // 自定義文件的名稱(chēng)
        method: "GET",
        header: {
          Authorization: "Bearer " + currentPage.data.access_token,
        },
        success(res) {
          let path = wx
            .getFileSystemManager()
            .readFileSync(res.filePath, "base64");
          currentPage.properties.fileList.forEach((x, i) => {
            if (imgObjectId == x.objectId) {
              currentPage.setData({
                ["fileList[" + i + "].imgToTemUrl"]: `data:image/jpg;base64,${path}`,
              });
            }
          });
        },
        complete() {},
      });
    },

點(diǎn)擊縮略圖預(yù)覽圖片

效果圖
微信小程序預(yù)覽二進(jìn)制流文件

代碼實(shí)現(xiàn)
注意點(diǎn):路徑含有中文的圖片預(yù)覽不了。
改正:將圖片的名字改為全英文字符就可以了。

    bindImgPreview: function (e) {
      let { name, idx } = e.currentTarget.dataset;
      let currentIndex = -1;
      let currentPage = this;
      let urls = currentPage.data.urls;
      urls.forEach((x, i) => {
        if (x == `${wx.env.USER_DATA_PATH}/${name}`) {
          currentIndex = i;
          return;
        }
      });
      wx.previewImage({
        current: urls[currentIndex],
        urls: urls,
        success(res) {
          console.log("預(yù)覽成功");
        },
        fail(err) {
          console.log("預(yù)覽失敗,原因:", err);
        },
        complete() {},
      });
    },

最后

如果你有更好的辦法可以相互交流,共同進(jìn)步!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483609.html

到了這里,關(guān)于微信小程序預(yù)覽二進(jìn)制流文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 后端返回二進(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類(lèi)型 application/pdf ,不能預(yù)覽,會(huì)直接下載 2、 前端 定義接口:并設(shè)置相應(yīng)類(lèi)型 responseType 為 blob 請(qǐng)求數(shù)據(jù):通過(guò) window.URL.createObjectURL(res) 轉(zhuǎn)成本地預(yù)覽地址, 在通過(guò) window.open() 方法打開(kāi)轉(zhuǎn)成本地預(yù)覽地址即可預(yù)覽PDF,如下

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

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

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

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

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

    2024年02月09日
    瀏覽(22)
  • vue2實(shí)現(xiàn)二進(jìn)制流pdf瀏覽器預(yù)覽功能

    該方法不需要使用插件? 獲取后端二進(jìn)制文件流后直接處理 然后點(diǎn)擊調(diào)用方法使用

    2024年01月20日
    瀏覽(25)
  • 07-2_Qt 5.9 C++開(kāi)發(fā)指南_二進(jìn)制文件讀寫(xiě)(stm和dat格式)

    07-2_Qt 5.9 C++開(kāi)發(fā)指南_二進(jìn)制文件讀寫(xiě)(stm和dat格式)

    除了文本文件之外,其他需要按照一定的格式定義讀寫(xiě)的文件都稱(chēng)為二進(jìn)制文件 。每種格式的二進(jìn)制文件都有自己的格式定義,寫(xiě)入數(shù)據(jù)時(shí)按照一定的順序?qū)懭?,讀出時(shí)也按照相應(yīng)的順序讀出。例如地球物理中常用的 SEG-Y 格式文件,必須按照其標(biāo)準(zhǔn)格式要求寫(xiě)入數(shù)據(jù)才符合

    2024年02月13日
    瀏覽(23)
  • 單片機(jī)二進(jìn)制bin(map、反匯編)文件分析(IAP程序跳轉(zhuǎn),PC指針指向問(wèn)題分析)

    單片機(jī)二進(jìn)制bin(map、反匯編)文件分析(IAP程序跳轉(zhuǎn),PC指針指向問(wèn)題分析)

    ?? .bin 文件就是二進(jìn)制文件(binary file),這種文件只包含機(jī)器碼。所有的數(shù)據(jù)都是機(jī)器可以執(zhí)行的指令碼、指令參數(shù)或者常量數(shù)據(jù),不包含其它調(diào)試信息。加載到內(nèi)存或者支持XIP(就地執(zhí)行)的存儲(chǔ)器中規(guī)定好的加載地址之后直接從規(guī)定好的運(yùn)行地址開(kāi)始運(yùn)行即可。 ??

    2024年02月03日
    瀏覽(67)
  • 將數(shù)據(jù)轉(zhuǎn)二進(jìn)制流文件,用PostMan發(fā)送二進(jìn)制流請(qǐng)求

    將數(shù)據(jù)轉(zhuǎn)二進(jìn)制流文件,用PostMan發(fā)送二進(jìn)制流請(qǐng)求

    一、將byte數(shù)組轉(zhuǎn)二進(jìn)制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,-115,17,36,15,-84,88,-72,22,-86,41,-90,-19,-58,19,99,-4,-63,29,51,-69,117,-120,121,3,-103,-75,44,64,-58,-34,73,-22,110,-90,92,-35,-18,-128,16,-

    2024年02月15日
    瀏覽(30)
  • java圖片轉(zhuǎn)二進(jìn)制流_java將文件轉(zhuǎn)化成二進(jìn)制流

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

    2024年02月06日
    瀏覽(35)
  • Python讀寫(xiě)二進(jìn)制文件

    Python 讀寫(xiě)文件的二進(jìn)制數(shù)據(jù)需要使用到struct模塊,進(jìn)行C/C++與Python數(shù)據(jù)格式的轉(zhuǎn)換。 struct模塊中最常用的函數(shù)為pack和unpack,用法如下: 函數(shù) return explain pack(fmt,v1,v2…) string 按照給定的格式(fmt),把數(shù)據(jù)轉(zhuǎn)換成字符串(字節(jié)流),并將該字符串返回. pack_into(fmt,buffer,offset,v1,v2…) No

    2024年02月08日
    瀏覽(21)
  • C#生成二進(jìn)制文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropServices; namespace WindowsFormsApplication1 { public partial class MAC : Form { public MAC() { InitializeComponent(); } [StructLay

    2024年02月13日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包