成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端下載 圖片 總結

cgspine / 740人閱讀

摘要:這時候后臺要提供一個請求的服務,并設置消息響應頭,告訴瀏覽器該文件需要下載。

前端下載 圖片 總結

前端下載圖片 分為兩大類:一是服務端配合實現(xiàn)(即下載后臺服務提供的資源); 二是 純前端下載

1、服務端配合實現(xiàn)

這種情況 對于前端開發(fā)非常簡單,只需要一個a標簽,如:

下載圖片

當直接訪問的某個文件時,如果該文件是二進制等瀏覽器無法解析的文件,瀏覽器才會下載該文件,但如果瀏覽器可以自己解析該文件,則它會打開該文件并以自己的方式呈現(xiàn)出來,而不會下載,此時就需要設置消息響應頭,告訴瀏覽器該文件需要下載而不是簡單的打開。
這時候后臺要提供一個get請求的服務,并設置消息響應頭,告訴瀏覽器該文件需要下載。以node為例:

app.get("/api/download/", (req, res, next) => {//以文件流的形式下載文件
    var filePath = path.join(__dirname, "../src/images/erwei.jpg");
    var stats = fs.statSync(filePath);
    res.set({
        "Content-Type": "application/octet-stream", //告訴瀏覽器這是一個二進制文件
        "Content-Disposition": "attachment; filename=111", //告訴瀏覽器這是一個需要下載的文件
        "Content-Length": stats.size  //文件大小
    });
    fs.createReadStream(filePath).pipe(res);
});
2、純前端下載

這其中又分為兩種情況:一是下載同源圖片(如同項目文件夾中的圖片);二是 跨域網(wǎng)站的靜態(tài)資源(如自己公司的CDN的靜態(tài)資源)

a.下載同源圖片

這種情況很簡單 利用a標簽的 downlaod 就可以實現(xiàn),例:

下載圖片
b.下載跨域網(wǎng)站的圖片

借助canvas,例

// 調(diào)用方式
// 參數(shù)一: src
// 參數(shù)二: 圖片名稱,可選
export const downloadImage = (src: string, name: string) => {
    const image = new Image();
    // 解決跨域 canvas 污染問題
    image.setAttribute("crossOrigin","anonymous");
    image.onload = function(){
      const canvas = document.createElement("canvas");
      canvas.width = image.width;
      canvas.height = image.height;
      const context = canvas.getContext("2d");
      context.drawImage(image,0,0,image.width,image.height);
      const url = canvas.toDataURL("image/png");
      // 生成一個 a 標簽
      const a = document.createElement("a");
      // 創(chuàng)建一個點擊事件
      const event = new MouseEvent("click");
      // 將 a 的 download 屬性設置為我們想要下載的圖片的名稱,若 name 不存在則使用"圖片"作為默認名稱
      a.download = name || "圖片";
      // 將生成的 URL 設置為 a.href 屬性
      a.href = url;
      // 觸發(fā) a 的點擊事件
      a.dispatchEvent(event);
    };
    image.src = src
}

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

轉載請注明本文地址:http://systransis.cn/yun/99073.html

相關文章

  • 前端下載 圖片 總結

    摘要:這時候后臺要提供一個請求的服務,并設置消息響應頭,告訴瀏覽器該文件需要下載。 前端下載 圖片 總結 前端下載圖片 分為兩大類:一是服務端配合實現(xiàn)(即下載后臺服務提供的資源); 二是 純前端下載 1、服務端配合實現(xiàn) 這種情況 對于前端開發(fā)非常簡單,只需要一個a標簽,如: 下載圖片 當直接訪問的某個文件時,如果該文件是二進制等瀏覽器無法解析的文件,瀏覽器才會下載該文件,但如果瀏覽器可以自己...

    Freelander 評論0 收藏0
  • 精彩文章大合集- 收藏集 - 掘金

    摘要:發(fā)布應用市場的平臺搶紅包工具紅包精靈開源啦掘金紅包精靈,如果喜歡,點個開源不易。作者將原素材文章進行了新內(nèi)容的添加和重新排列,但是因為文章高效的代碼編寫技巧總結前端掘金本文總結了代碼編寫技巧,來提升你的和代碼。 收藏安卓開發(fā)中非常實用優(yōu)秀的庫! 有圖有真相! - Android - 掘金本來是打算收藏工具類的,但轉念一想,已經(jīng)有這么多優(yōu)秀的庫了,就沒必要再去重復造輪子了,便歸納工作中比...

    ermaoL 評論0 收藏0
  • web前端——美化效果總結

    摘要:概述項目開發(fā)過程中使用到了不少前端美化效果的方法,總結一下圖片作為背景要實現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項目開發(fā)過程中使用到了不少web前端美化效果的方法,總結一下 1 圖片作為背景 要實現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...

    awkj 評論0 收藏0
  • web前端——美化效果總結

    摘要:概述項目開發(fā)過程中使用到了不少前端美化效果的方法,總結一下圖片作為背景要實現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項目開發(fā)過程中使用到了不少web前端美化效果的方法,總結一下 1 圖片作為背景 要實現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...

    Scorpion 評論0 收藏0
  • web前端——美化效果總結

    摘要:概述項目開發(fā)過程中使用到了不少前端美化效果的方法,總結一下圖片作為背景要實現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項目開發(fā)過程中使用到了不少web前端美化效果的方法,總結一下 1 圖片作為背景 要實現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...

    DobbyKim 評論0 收藏0

發(fā)表評論

0條評論

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