κ²μνμ μμ±μκ° μ λ‘λν 첨λΆνμΌμ λ€μ΄λ‘λ λ°μ보μ. (νμν λΌμ΄λΈλ¬λ¦¬ axios)
main.js
import axios from "axios" app.config.globalProperties.$axios = axios
src > View.vue
<template> <div @click="download"/>λ€μ΄λ‘λ<div> </template> <script> export default { method: { download(){ this.$axios({ // μ΄λ―Έμ§ url url: "https://images.unsplash.com/photo-1682102230567-25fa2595d9b0?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=686&q=80", method: "GET", responseType: "blob", }).then(response => { const url = window.URL.createObjectURL(new Blob([response.data])) const link = document.createElement('a') link.href = url link.setAttribute('download', "undefined.jpg") // undefined.jpg => λ€μ΄ λ°μμ λ νμΌ μ΄λ¦ λ° νμ₯μ document.body.appendChild(link) link.click() }).catch((e) => { console.log(e) }) }, } } </script> <style></style>
<!-- <a href="λ‘컬 μλκ²½λ‘" download="μ μ₯λ λ νμΌμ΄λ¦κ³Ό νμ₯μ">λ€μ΄</a> -->
<a href="/img/img.jpg" download="undefined.jpg">λ€μ΄</a>
<!-- undefined.jpg λ‘ νμΌμ΄ λ€μ΄λ‘λ λλ€. -->
a νκ·Έμ download μμ±μΌλ‘λ μμ½κ² νμΌμ λ€μ΄λ‘λ ν μ μμ§λ§ λ€μ΄λ°μΌλ €λ μ΄λ―Έμ§κ° μλ²μ μμ λλ λ€μ΄λ‘λ λ°μμ§μ§ μκ³ κ·Έλ₯ λΈλΌμ°μ μ λμ΄μ§κΈ°λ§ νλ€..
λ§μ½ axios blob λ₯Ό μ¬μ©νμ λ CORS ERROR κ° λ°μνλ€λ©΄ λ°±μλ μͺ½μμ μ€μ μ ν΄μ€μΌνλ€!