a태그 이미지 다운로드 구현

2022. 3. 20. 15:24·NOTE

이미지를 다운로드 해야하는 기능을 구현하다가 나온이슈가 있어서 정리해 봅니다. 


이미지 다운로드 구현 방법

1. a태그에 href, download 속성을 사용하여 구현합니다. 정말 간단!!!

<a href="이미지 경로" download="내 지정하고 싶은 이미지명"/>

그렇지만!! 변수가 있다는 점

- 같은 출처에 있는 이미지가 아니면 작동하지 않는다.

- ie에서는 작동하지 않는다. 

 

사실 이번작업에 같은출처 이미지가 아니라 a태그를 사용할수는 없었습니다. 

 

2. XMLHttpRequest를 사용하여 직접 blob 을 얻어와 처리 

이 방법으로 하면 교차출처 이미지도 가능하고, ie도 가능하다는 점 입니다!

function downloadImg(url, fileName) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.responseType = 'blob';
  xhr.onload = function () {
    var urlCreator = window.URL || window.webkitURL;
    var imageUrl = urlCreator.createObjectURL(this.response);
    var tag = document.createElement('a');
    tag.href = imageUrl;
    tag.download = fileName;
    document.body.appendChild(tag);
    tag.click();
    document.body.removeChild(tag);
  };
  xhr.send();
}

 

 

'NOTE' 카테고리의 다른 글

react-helmet  (0) 2023.02.25
기존 CRA프로젝트에 typescript 템플릿 추가하기  (0) 2023.02.22
Array.prototype.filter(), Array.prototype.find()의 차이  (0) 2023.02.16
Swiper.js slidesPerGroup 슬라이드 여러장씩 이동시키기  (0) 2023.02.03
:not 선택자는 익스 지원하지 않는다.  (0) 2021.09.29
'NOTE' 카테고리의 다른 글
  • 기존 CRA프로젝트에 typescript 템플릿 추가하기
  • Array.prototype.filter(), Array.prototype.find()의 차이
  • Swiper.js slidesPerGroup 슬라이드 여러장씩 이동시키기
  • :not 선택자는 익스 지원하지 않는다.
ssund
ssund
  • ssund
    ssund의 기술블로그
    ssund
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • TECH (23)
      • NOTE (40)
      • DAILY (7)
      • javascript (1)
      • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • TECH
    • NOTE
    • DAILY
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    global-style
    react state management
    redux
    styled-components
    d.ts
    함수와 메서드차이
    reduxtoolkit
    웹브라우저구성
    TypeScript
    reat-head
    커머스프로젝트
    배열요소순서
    git배포
    slidesPerGroup
    React
    Array.sort()
    theme-provider
    call signatures
    타입스크립트
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ssund
a태그 이미지 다운로드 구현
상단으로

티스토리툴바