国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解決H5的a標(biāo)簽的download屬性下載service上的文件出現(xiàn)跨域問題

Charles / 2894人閱讀

摘要:通過點擊下載多媒體文件圖片視頻文件等最簡單的方式下載文件如果指向同源資源,是正常的。解決方案一將文件打包為等瀏覽器不能打開的文件下載。如果指向的第三方資源配置了,屬性無效,但可以獲取文件下載到本地,無法修改修改文件名。

1.通過點擊下載多媒體文件(圖片/視頻/文件等)

最簡單的方式:

下載文件

如果url指向同源資源,是正常的。

如果url指向第三方資源,download會失效,表現(xiàn)和不使用download時一致——瀏覽器能打開的文件,瀏覽器會直接打開,不能打開的文件,會直接下載。瀏覽器打開的文件,可以手動下載。

解決方案一:將文件打包為.zip/.rar等瀏覽器不能打開的文件下載。

解決方案二:通過后端轉(zhuǎn)發(fā),后端請求第三方資源,返回給前端,前端使用file-saver等工具保存文件。

?

如果url指向的第三方資源配置了CORS,download屬性無效,但可以獲取文件下載到本地,無法修改修改文件名。

2.解決方法 1. 借助HTML5 Blob實現(xiàn)文本信息文件下載
const downloadRes = async (url, name) => {
    let response = await fetch(url)
    // 內(nèi)容轉(zhuǎn)變成blob地址
    let blob = await response.blob()
    // 創(chuàng)建隱藏的可下載鏈接
    let objectUrl = window.URL.createObjectURL(blob)
    let a = document.createElement("a")
    //地址
    a.href = objectUrl
    //修改文件名
    a.download = name
    // 觸發(fā)點擊
    document.body.appendChild(a)
    a.click()
    //移除
    setTimeout(() => document.body.removeChild(a), 1000)
}
2.圖片格式
如果我們想下載一張圖片,可以把這張圖片轉(zhuǎn)換成base64格式,然后下載。
```
export const downloadImg = async (url, name) => {
    var canvas = document.createElement("canvas"),
        ctx = canvas.getContext("2d"),
        img = new Image();
    img.crossOrigin = "Anonymous";
    img.onload = function() {
        canvas.height = img.height;
        canvas.width = img.width;
        ctx.drawImage(img, 0, 0);
        var dataURL = canvas.toDataURL("image/png");
        let a = document.createElement("a");
        a.href = dataURL;
        a.download = name;
        document.body.appendChild(a);
        a.click();
        setTimeout(() => {
            document.body.removeChild(a);
            canvas = null;
        }, 1000);
    };
    img.src = url;
};
```


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/110264.html

相關(guān)文章

  • [ 一起學(xué)React系列 -- 9 ] React中文件下載

    摘要:本篇所說的文件下載也是基于和或者都行。的返回值是一個有意思的對象,它包含了很多方法,其中一個方法就是。通過的響應(yīng)頭獲取到文件名。接下來就是對標(biāo)簽的一系列操作,然后模擬點擊事件觸發(fā)下載動作。 距離上次博文更新已經(jīng)快一個月了,期間忙于各種事情無法脫身。今天難得閑暇 and then 就來更新啦...上篇中我們了解了下載React中如何實現(xiàn)文件的上傳,雖然不算什么高大上的技術(shù)但實際開發(fā)的時候...

    Jacendfeng 評論0 收藏0
  • h5喚醒APP小記

    摘要:比如聯(lián)系方式銀行卡信用卡信息支付寶各大商城的賬戶密碼照片甚至行程與位置信息等。針對這個問題,蘋果使用了名為沙盒的機(jī)制應(yīng)用只能訪問它聲明可能訪問的資源。 h5喚醒APP功能 最近遇到一個需求,需要在從APP分享出去的H5頁面中,帶有一個立即打開的按鈕,如果本地安裝了app,那么就直接喚起本地的app,如果沒有安裝,則跳轉(zhuǎn)到下載。這是一個很正常的推廣和導(dǎo)流量的策略。前端小白從來沒有做過這個...

    KnewOne 評論0 收藏0
  • h5喚醒APP小記

    摘要:比如聯(lián)系方式銀行卡信用卡信息支付寶各大商城的賬戶密碼照片甚至行程與位置信息等。針對這個問題,蘋果使用了名為沙盒的機(jī)制應(yīng)用只能訪問它聲明可能訪問的資源。 h5喚醒APP功能 最近遇到一個需求,需要在從APP分享出去的H5頁面中,帶有一個立即打開的按鈕,如果本地安裝了app,那么就直接喚起本地的app,如果沒有安裝,則跳轉(zhuǎn)到下載。這是一個很正常的推廣和導(dǎo)流量的策略。前端小白從來沒有做過這個...

    jayzou 評論0 收藏0
  • 聊一聊H5應(yīng)用緩存-Manifest

    摘要:原文聊一聊應(yīng)用緩存導(dǎo)讀是提供的一種應(yīng)用緩存機(jī)制基于它應(yīng)用可以實現(xiàn)離線訪問為此瀏覽器還提供了應(yīng)用緩存的雖然的技術(shù)已被標(biāo)準(zhǔn)廢棄但這不影響我們嘗試去了解它也正是因為的應(yīng)用緩存機(jī)制如此誘人餓了么和郵箱等都還在使用著它描述對熟悉的同學(xué)可以跳過此 原文: 聊一聊H5應(yīng)用緩存-Manifest 導(dǎo)讀 Manifest 是 H5提供的一種應(yīng)用緩存機(jī)制, 基于它web應(yīng)用可以實現(xiàn)離線訪問(offline...

    陳偉 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<