문제 ν•΄κ²° πŸ›  – vue

joyfulwaveΒ·2023λ…„ 4μ›” 26일
0

λ‚˜λ§Œμ˜ 사전 - VUE

λͺ©λ‘ 보기
4/6
post-thumbnail

πŸ”’ 문제 상황

κ²Œμ‹œνŒμ— μž‘μ„±μžκ°€ μ—…λ‘œλ“œν•œ μ²¨λΆ€νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›μ•„λ³΄μž. (ν•„μš”ν•œ 라이브러리 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>

πŸ“Œ TIP

  • κ·Έλƒ₯ λ‘œμ»¬μ— μžˆλŠ” 이미지λ₯Ό λ‹€μš΄λ°›μ„ λ•ŒλŠ” axiosλ₯Ό μ‚¬μš©ν•  ν•„μš”λŠ” μ—†λ‹€.
	<!-- <a href="둜컬 μƒλŒ€κ²½λ‘œ" download="μ €μž₯될 λ•Œ νŒŒμΌμ΄λ¦„κ³Ό ν™•μž₯자">λ‹€μš΄</a> --> 
	<a href="/img/img.jpg" download="undefined.jpg">λ‹€μš΄</a> 
	<!-- undefined.jpg 둜 파일이 λ‹€μš΄λ‘œλ“œ λœλ‹€. -->
  • a νƒœκ·Έμ˜ download μ†μ„±μœΌλ‘œλ„ μ†μ‰½κ²Œ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ ν•  수 μžˆμ§€λ§Œ λ‹€μš΄λ°›μœΌλ €λŠ” 이미지가 μ„œλ²„μ— μžˆμ„ λ•ŒλŠ” λ‹€μš΄λ‘œλ“œ 받아지지 μ•Šκ³  κ·Έλƒ₯ λΈŒλΌμš°μ €μ— λ„μ–΄μ§€κΈ°λ§Œ ν•œλ‹€..

  • λ§Œμ•½ axios blob λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ CORS ERROR κ°€ λ°œμƒν•œλ‹€λ©΄ λ°±μ—”λ“œ μͺ½μ—μ„œ 섀정을 ν•΄μ€˜μ•Όν•œλ‹€!

0개의 λŒ“κΈ€