三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版

以 web-view 嵌入在小(xiǎo)程序中 h5 頁面,如(rú)何處理(≠'±lǐ)附件(jiàn)下(xià)載 - 新聞資訊 - 雲南(nán)小(xiǎ↔σo)程序開(kāi)發|雲南(nán)軟件(jiàn)開(kāi)發|雲南(nán)網站(♦β​εzhàn)建設-雲南維串信息科技有限公司

159-8711-8523

雲南(nán)網建設/小(xiǎo)程序開(kāi)發/軟件(jiàn)開(kāi)發

知(zhī)識

不(bù)管是(shì)網站(zhàn),軟件(jiγ"àn)還(hái)是(shì)小(xiǎo)程序,都(dōu '★ )要(yào)直接或間(jiān)接能(néng)為(wèi)您σ• 産生(shēng)價值,我們在追求其視(shì)覺表現(xiàn)的(de)同時(s♠↑•€hí),更側重于功能(néng)的(de)便捷,營銷的(de)便利,運營的(de)高(gāo)↓ ♦效,讓網站(zhàn)成為(wèi)營銷工(gōng)具,讓軟件ε™<γ(jiàn)能(néng)切實提升企業(yè)內(n‍≠±←èi)部管理(lǐ)水(shuǐ)平和(hé)效率。優秀的(de)程序為(wèi)↔★後期升級提供便捷的(de)支持!

以 web-view 嵌入在小(xiǎo)程序中 h5 頁面,®​ε如(rú)何處理(lǐ)附件(jiàn)下(xià)載

發表時(shí)間(jiān):2021-1-5

發布人(rén):葵宇科(kē)技(jì)

浏覽次數(shù):309

前言

由于項目體(tǐ)積過大(dà),以至于分(fēn)包後也(yě)逐步$ε超過了(le)小(xiǎo)程序的(de)限制(zhì),所$Ω✘以将 h5 端的(de)頁面以 web-view 的(de)方式嵌入了(le)小(xiǎ¶$o)程序。這(zhè)也(yě)産生(shēng)了(le)一(yī)些(±'₹xiē)意料之外(wài)的(de)問(wèn)題,這(z ÷÷hè)裡(lǐ)記一(yī)個(gè)關于文(wén)件(jià₽↑λ n)預覽下(xià)載的(de)問(wèn)題。

在 h5 端中,針對(duì)圖片和(hé)視(shì)頻(pín)會(huì)使用(yε×βòng) img、video 标簽達到(dào)預覽的(de)效果,其<σ♣餘的(de)文(wén)件(jiàn)類型會(huì)直接粗暴的(de★α​')調用(yòng) window.open 的(de)方式打開(kāi),如(rú)果浏覽器(qì)能(néng)夠解析則預覽,不•€♠(bù)能(néng)解析浏覽器(qì)會(huì)默認下(xi♠λ>✔à)載。(這(zhè)裡(lǐ)有(yǒu)個(gè)問(wèn)題,ios 的(de)≥↔✘♥手機(jī)對(duì)于不(bù)能(néng)識别的(de)文(wén)件(jiàn)會(✔ε©huì)顯示亂碼)

嵌入小(xiǎo)程序并配置了(le)附件(jiàn) •£存儲的(de)業(yè)務域名之後發現(xiàn)使用(yòng) andro&σ®>id 手機(jī)調用(yòng) window.open 會(huì)出現(xiàn)白(bái)屏,ios 手機(jī)則沒有(yǒu)問(wèn₩≈≤)題。 

嘗試使用(yòng) iframe 标簽達到(dào)類似的(de)效果,但(d¶>'àn)是(shì)在小(xiǎo)程序中也(yě)是(shì)沒有(yǒu)效果的(de)。<γ

解決的(de)方法

後面同事(shì)給了(le)個(gè)思路(lù),對(duì)于需要(yào) window.open 打開(kāi)的(de)文(wén)件(jiàn),直接跳(tiào)轉到(dào)一(yī≤™λ)個(gè)特定的(de)小(xiǎo)程序原生(shēng)頁面,借助小(xiǎo)程∑₩序的(de) api 預覽文(wén)件(jiàn)>↕。如(rú)果小(xiǎo)程序環境也(yě)無法預覽的(de)文(wén)件(jiàn),π"≥則使用(yòng)小(xiǎo)程序的(de) api 下(xià)載文(¥♥≠​wén)件(jiàn)。

  1. h5 頁面的(de)處理(lǐ)
    import wx from 'weixin-js-sdk'

    if (
        process.env.TARO_ENV === 'h5' &&
        window.__wxjs_environment &&
        window.__wxjs_environment === 'miniprogram'
    ) {
        wx.miniProgram.navigateTo({
            url: `/pages/file/index?
            fi≈®£leExt=${fileExt}
            &tokenId=${tokenId}
            &fileName=${fileName}
            &filePath=${encodeURIComponent(filePath)}
            `,
        })
    }
複制(zhì)代碼

這(zhè)裡(lǐ)有(yǒu)幾個(gè)點需要(yào)注意一(yī)下(x₽✔&₩ià)

  • 因為(wèi)項目是(shì)通(tōng)過 Ta®÷£ro 編譯出的(de),所以需要(yào) process.env.TARO_ENV 判斷代碼≠₩∏✘類型
  • 調用(yòng) wx sdk 的(de) wx.miniProgram.navigate✔♥To api 可(kě)以直接調用(yòng)。不(bù)需要(yào)在微(wēi)φπ€信公衆平台綁定域名權限驗證等。
  • 跳(tiào)轉路(lù)徑一(yī)定要(yào)寫完整 (因為(©÷wèi)少(shǎo)了(le)一(yī)個(gè) / 一(yī)直↑≥無法跳(tiào)轉,一(yī)度懷疑這(zhè)個(gè)思路(lù)行(® ¥xíng)不(bù)通(tōng))
  • 文(wén)件(jiàn)路(lù)徑一(yī)定要(yào)←$&$使用(yòng) encodeURIComponent 方法轉義。如(rú)果 filePath 路(lù)徑中包含一(±™εyī)些(xiē)參數(shù),不(bù)轉義的(de)情況下(xià)路(lù)由跳€¶∏∑(tiào)轉的(de)過程中會(huì)丢失
  • tokenId 用(yòng)于權限鑒别(根據實際情況傳遞)
  1. 小(xiǎo)程序原生(shēng)頁面的(de)處理(lǐ)
    const { filePath, fileExt, tokenId, fileName } = this.queryParams
    const supports = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf']

    // 支持預覽
    if (supports.includes(fileExt Ω)) {

        const downloadResponse: any = await toPromise(wx.downloadFile, {
            url: filePath,
            header: {
                'cookie': `tokenId=${tokenId};`,
            }
        })
        const { tempFilePath } = downloadResponse
        const openResponse = await toPromise(wx.openDocument, ₹↓λ∞{
            filePath: tempFilePath,
            fileType: fileExt
        })

    } else {
        // 該文(wén)件(jiàn)類型不(bù)支持預覽,下(xià)載
        const filePath = wx.env.USER_DATA_PATH + `/${fileName}`
        const saveResponse = await toPromise(wx.getFileSystemManagβ↑er().saveFile, {
            filePath✘♥,
            tempFilePath,
        })
 ♠ε   }
複制(zhì)代碼

這(zhè)裡(lǐ)有(yǒu)幾個(gè)點需要(yào)注意一(yī)下(xià)

  • 對(duì)于有(yǒu)權限鑒定的(de)文(wén)件(jiàn)一(yī)般是(s"×"¥hì)通(tōng)過 cookie 實現(xiàn)的(de),小(xiǎo)程序中需∞∞≠π要(yào)手動設置 wx.downloadFile 的(de) header 設置 cookie

  • 小(xiǎo)程序中 api 的(de)回調方式很(hěn)容易造成回調地(dì)獄,可(k×↑↔ě)以包裝一(yī)下(xià) promise

  • 将文(wén)件(jiàn)保存在本地(dì)這(zhè)個(gè)功能(néng) wx.getFileSystemManager().sav₹€eFile 非常的(de)不(bù)人(rén)性化(huà)。$σ &下(xià)載後很(hěn)難找到(dào)下(xià)₹☆載的(de)文(wén)件(jiàn)的(de)具體(tǐ)地(dì)"±₩¶址。暫時(shí)沒有(yǒu)找到(dào)好(hǎ‌←o)的(de)解決方案。


作(zuò)者:不(bù)會(huì)撩妹(mèi)≈€的(de)楚留香
來(lái)源:掘金(jīn)
著作(zuò)權歸作(zuò)者所有(yǒu)。商業(yè)轉載請(qǐng)聯系∏>"γ作(zuò)者獲得(de)授權,非商業(yè)轉載請(qǐng)注明§ γ‌(míng)出處。

相(xiàng)關案例查看(kàn)更多(duō)

相(xiàng)關閱讀(dú)

三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版