本篇文章為大家展示了怎么在javascript中利用鏈接跨域下載圖片,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
10多年的高安網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整高安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“高安網(wǎng)站設(shè)計(jì)”,“高安網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在本地或者網(wǎng)站下載外鏈url圖片時(shí)涉及到跨域,跨域會(huì)暴露自己的隱私,瀏覽器對(duì)跨域請(qǐng)求進(jìn)行了限制,故需要設(shè)置crossOrigin為anonymous來(lái)允許跨域,瀏覽器會(huì)為這張圖片的請(qǐng)求頭附帶Origin信息,告訴靜態(tài)資源服務(wù)器,請(qǐng)?jiān)陧憫?yīng)頭中附帶Access-Control-Allow-Methods、Access-Control-Allow-Origin,以便瀏覽器放行。
代碼示例如下
eventEmitter.js
/* * 事件觸發(fā)器 * @Author: wujiang * @Date: 2018-11-11 22:50:43 * @Last Modified by: wujiang * @Last Modified time: 2018-11-11 23:39:40 */ const EventEmitter = require('events') class MyEmitter extends EventEmitter {} const myEmitter = new MyEmitter() export default myEmitter
backend.js
import eventEmitter from './common/eventEmitter' // 圖片下載對(duì)象 let downloadedImg = null // 待下載文件名 let fileName = null // 監(jiān)聽是否獲取圖片地址 eventEmitter.addListener('getHref', href => { imatateDownloadByA(href, fileName) }) /** * base64下載圖片(可跨域) * @param {*} img * @param {String} filename 文件名 */ function downloadImg (imgUrl, filename) { fileName = filename startDownloadImg(imgUrl, getImgDataUrl) } /** * 開始下載圖片之前 * @param {String} imgUrl * @param {Function} callback */ function startDownloadImg (imgUrl, callback) { let imageURL = imgUrl downloadedImg = new Image() downloadedImg.crossOrigin = 'Anonymous' downloadedImg.src = imageURL downloadedImg.addEventListener('load', callback, false) } /** * 獲取圖片下載base64字符串 * @param {DOMimg} domimg */ function getImgDataUrl () { const canvas = document.createElement('canvas') const context = canvas.getContext('2d') const width = downloadedImg.width || downloadedImg.naturalWidth const height = downloadedImg.height || downloadedImg.naturalHeight const imgSrc = downloadedImg.src let type = imgSrc.substring(imgSrc.lastIndexOf('.') + 1) let dtype = type === 'jpg' ? 'jpeg' : 'png' canvas.width = width canvas.height = height context.drawImage(downloadedImg, 0, 0) eventEmitter.emit('getHref', canvas.toDataURL(`image/${dtype}`)) } /** * 通過(guò)a標(biāo)簽?zāi)M下載 * @param {String} href * @param {String} filename */ function imatateDownloadByA (href, filename) { const a = document.createElement('a') a.download = filename a.style.display = 'none' a.href = href document.body.appendChild(a) a.click() a.remove() window.URL.revokeObjectURL(href) } downloadImg('https://img.alicdn.com/imgextra/i2/54199406/O1CN012JLzreAxzn1xhNP_!!54199406.jpg', '測(cè)試')
注意
若有跨域的錯(cuò)誤提示出現(xiàn),則需后臺(tái)服務(wù)器進(jìn)行跨域設(shè)置。
上述內(nèi)容就是怎么在javascript中利用鏈接跨域下載圖片,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)標(biāo)題:怎么在javascript中利用鏈接跨域下載圖片
鏈接地址:http://bm7419.com/article26/gijhcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、微信公眾號(hào)、小程序開發(fā)、ChatGPT、外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)