91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在javascript中利用鏈接跨域下載圖片

發布時間:2021-03-23 15:52:57 來源:億速云 閱讀:317 作者:Leah 欄目:web開發

本篇文章為大家展示了怎么在javascript中利用鏈接跨域下載圖片,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

在本地或者網站下載外鏈url圖片時涉及到跨域,跨域會暴露自己的隱私,瀏覽器對跨域請求進行了限制,故需要設置crossOrigin為anonymous來允許跨域,瀏覽器會為這張圖片的請求頭附帶Origin信息,告訴靜態資源服務器,請在響應頭中附帶Access-Control-Allow-Methods、Access-Control-Allow-Origin,以便瀏覽器放行。

代碼示例如下

eventEmitter.js

/*
 * 事件觸發器
 * @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'
// 圖片下載對象
let downloadedImg = null
// 待下載文件名
let fileName = null

// 監聽是否獲取圖片地址
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}`))
}

/**
 * 通過a標簽模擬下載
 * @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', '測試')

注意

若有跨域的錯誤提示出現,則需后臺服務器進行跨域設置。

怎么在javascript中利用鏈接跨域下載圖片

上述內容就是怎么在javascript中利用鏈接跨域下載圖片,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉南县| 永修县| 越西县| 民丰县| 鹤庆县| 德化县| 武邑县| 大姚县| 阳新县| 教育| 彭州市| 五寨县| 丹棱县| SHOW| 南汇区| 德格县| 赫章县| 措美县| 无锡市| 孙吴县| 信宜市| 宾阳县| 綦江县| 措勤县| 阳春市| 长顺县| 咸宁市| 彭阳县| 大邑县| 绩溪县| 阜南县| 景德镇市| 永春县| 右玉县| 镇坪县| 上饶市| 鄂托克旗| 屏边| 沂南县| 房产| 遂宁市|