摘要:這時(shí)候后臺(tái)要提供一個(gè)請求的服務(wù),并設(shè)置消息響應(yīng)頭,告訴瀏覽器該文件需要下載。
前端下載 圖片 總結(jié)
前端下載圖片 分為兩大類:一是服務(wù)端配合實(shí)現(xiàn)(即下載后臺(tái)服務(wù)提供的資源); 二是 純前端下載
1、服務(wù)端配合實(shí)現(xiàn)這種情況 對于前端開發(fā)非常簡單,只需要一個(gè)a標(biāo)簽,如:
下載圖片
當(dāng)直接訪問的某個(gè)文件時(shí),如果該文件是二進(jìn)制等瀏覽器無法解析的文件,瀏覽器才會(huì)下載該文件,但如果瀏覽器可以自己解析該文件,則它會(huì)打開該文件并以自己的方式呈現(xiàn)出來,而不會(huì)下載,此時(shí)就需要設(shè)置消息響應(yīng)頭,告訴瀏覽器該文件需要下載而不是簡單的打開。
這時(shí)候后臺(tái)要提供一個(gè)get請求的服務(wù),并設(shè)置消息響應(yīng)頭,告訴瀏覽器該文件需要下載。以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", //告訴瀏覽器這是一個(gè)二進(jìn)制文件 "Content-Disposition": "attachment; filename=111", //告訴瀏覽器這是一個(gè)需要下載的文件 "Content-Length": stats.size //文件大小 }); fs.createReadStream(filePath).pipe(res); });2、純前端下載
這其中又分為兩種情況:一是下載同源圖片(如同項(xiàng)目文件夾中的圖片);二是 跨域網(wǎng)站的靜態(tài)資源(如自己公司的CDN的靜態(tài)資源)
a.下載同源圖片這種情況很簡單 利用a標(biāo)簽的 downlaod 就可以實(shí)現(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"); // 生成一個(gè) a 標(biāo)簽 const a = document.createElement("a"); // 創(chuàng)建一個(gè)點(diǎn)擊事件 const event = new MouseEvent("click"); // 將 a 的 download 屬性設(shè)置為我們想要下載的圖片的名稱,若 name 不存在則使用"圖片"作為默認(rèn)名稱 a.download = name || "圖片"; // 將生成的 URL 設(shè)置為 a.href 屬性 a.href = url; // 觸發(fā) a 的點(diǎn)擊事件 a.dispatchEvent(event); }; image.src = src }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99073.html
摘要:這時(shí)候后臺(tái)要提供一個(gè)請求的服務(wù),并設(shè)置消息響應(yīng)頭,告訴瀏覽器該文件需要下載。 前端下載 圖片 總結(jié) 前端下載圖片 分為兩大類:一是服務(wù)端配合實(shí)現(xiàn)(即下載后臺(tái)服務(wù)提供的資源); 二是 純前端下載 1、服務(wù)端配合實(shí)現(xiàn) 這種情況 對于前端開發(fā)非常簡單,只需要一個(gè)a標(biāo)簽,如: 下載圖片 當(dāng)直接訪問的某個(gè)文件時(shí),如果該文件是二進(jìn)制等瀏覽器無法解析的文件,瀏覽器才會(huì)下載該文件,但如果瀏覽器可以自己...
摘要:發(fā)布應(yīng)用市場的平臺(tái)搶紅包工具紅包精靈開源啦掘金紅包精靈,如果喜歡,點(diǎn)個(gè)開源不易。作者將原素材文章進(jìn)行了新內(nèi)容的添加和重新排列,但是因?yàn)槲恼赂咝У拇a編寫技巧總結(jié)前端掘金本文總結(jié)了代碼編寫技巧,來提升你的和代碼。 收藏安卓開發(fā)中非常實(shí)用優(yōu)秀的庫! 有圖有真相! - Android - 掘金本來是打算收藏工具類的,但轉(zhuǎn)念一想,已經(jīng)有這么多優(yōu)秀的庫了,就沒必要再去重復(fù)造輪子了,便歸納工作中比...
摘要:概述項(xiàng)目開發(fā)過程中使用到了不少前端美化效果的方法,總結(jié)一下圖片作為背景要實(shí)現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項(xiàng)目開發(fā)過程中使用到了不少web前端美化效果的方法,總結(jié)一下 1 圖片作為背景 要實(shí)現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...
摘要:概述項(xiàng)目開發(fā)過程中使用到了不少前端美化效果的方法,總結(jié)一下圖片作為背景要實(shí)現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項(xiàng)目開發(fā)過程中使用到了不少web前端美化效果的方法,總結(jié)一下 1 圖片作為背景 要實(shí)現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...
摘要:概述項(xiàng)目開發(fā)過程中使用到了不少前端美化效果的方法,總結(jié)一下圖片作為背景要實(shí)現(xiàn)的效果是,任意一張圖片,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。 概述 項(xiàng)目開發(fā)過程中使用到了不少web前端美化效果的方法,總結(jié)一下 1 圖片作為背景 要實(shí)現(xiàn)的效果是,任意一張圖片img-page-background.png,不需要調(diào)整圖片尺寸,圖片完全填充網(wǎng)頁背景。首先需在CSS代碼中創(chuàng)建.page-bg...
閱讀 683·2021-11-23 09:51
閱讀 3274·2019-08-30 15:54
閱讀 439·2019-08-30 15:52
閱讀 3107·2019-08-30 13:58
閱讀 2912·2019-08-30 13:53
閱讀 2683·2019-08-29 14:18
閱讀 2406·2019-08-27 10:54
閱讀 2363·2019-08-26 18:09