이슈
api통신으로 excel download를 하는데, 한글이 깨진 형태의 데이터가 내려오고, postman에서 테스트를 해서 다운받기를 누르면 정상적인 엑셀로 나오는데 실제 내가 짠 코드로 열면 알수없는 형식의 파일이라고 떴다.
해결
1. request 통신 시에 responseType: 'blob'를 넣어주어야한다.
2. 받은데이터를 Blob를 이용하여 변형 한다.
3. 가상 a 태그를 사용하여 a태그의 download기능을 사용하여 다운로드한다.
1. request 통신 시에 headers 안에 responseType: 'blob'를 넣어주어야한다.
const result = await this.request({
...api,
responseType: 'blob'
}, options);
2. 받은데이터를 Blob를 이용하여 변형 한다.
const blob = new Blob([ blobData ],
{ type : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }
);
3. 가상 a 태그를 사용하여 a태그의 download기능을 사용하여 다운로드한다.
const linkEl = document.createElement('a');
linkEl.href = window.URL.createObjectURL(blob);
linkEl.download = `${fileName || 'excel'}`;
linkEl.click();
반응형
'Vue > Vue3' 카테고리의 다른 글
[Vue3] vite.config.ts 에서 scss 설정하는 방법 (0) | 2022.03.15 |
---|---|
[Vue3] Provide와 inject 한 곳에서 정리하여 불러오기 (0) | 2022.02.21 |
[vue3] teleport란 ? (0) | 2022.02.21 |
[Vue3] v-model 삽질기 (양방향 통신) (0) | 2022.01.25 |
[Vue3] 배열 Array Watch 제대로 하는법 (lodash의 _cloneDeep) (0) | 2022.01.24 |