Vue.js 응용 프로그램에서 Excel 파일을 올바르게 다운로드하는 방법은 무엇입니까?
다운로드에 어려움을 겪고 있습니다.Excel줄을 지어 들어가다xlsx내 형식Vue.js어플.내 Vue.js 애플리케이션은 원격 SFTP 서버에서 Excel 파일을 다운로드하는 Node.js 애플리케이션에 게시 요청을 합니다.백엔드 애플리케이션은 문제 없이 작동합니다.
Vue.js 애플리케이션에서 다음 코드를 사용합니다.
axios.post(config.backendHost + '/excel', {
file_name: fileName
}).then((response) => {
const url = URL.createObjectURL(new Blob([response.data], {
type: 'application/vnd.ms-excel'
}))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
});
브라우저에서 파일을 다운로드한 후 파일이 자동으로 열리고 다음과 같은 오류가 발생합니다.
일부 콘텐츠에서 문제를 발견했습니다.
.xlsx우리가 할 수 있는 한 최대한 회복하기를 원하십니까?
응답 유형을 포스트 콜의 세 번째 인수로 추가해야 합니다.
{
responseType: 'blob'
}
그런 당신의 최종 코드.
axios.post(config.backendHost + '/excel', {
file_name: fileName
}, {
responseType: 'blob'
}).then((response) => {
const url = URL.createObjectURL(new Blob([response.data], {
type: 'application/vnd.ms-excel'
}))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
});
또는 FileSaver.js 라이브러리를 사용하여 파일을 저장할 수 있습니다.
import FileSaver from 'file-saver'
axios.post(config.backendHost + '/excel', {
file_name: fileName
}, {
responseType: 'blob'
}).then((response) => {
// response.data is a blob type
FileSaver.saveAs(response.data, fileName);
});
내 사례는 성공했습니다.
axios.get(`/api/v1/companies/${companyId}/export`, {
responseType: 'blob',
}).then((response) => {
const url = URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute(
'download',
`${companyId}-${new Date().toLocaleDateString()}.xlsx`
)
document.body.appendChild(link)
link.click()
})
언급URL : https://stackoverflow.com/questions/58024246/how-download-excel-file-in-vue-js-application-correctly
'programing' 카테고리의 다른 글
| 디스플레이: 인라인 플렉스와 디스플레이: 플렉스의 차이점은 무엇입니까? (0) | 2023.08.15 |
|---|---|
| 스프링 보안 로그인 페이지에서 추가 매개 변수 전달 방법 (0) | 2023.08.15 |
| 새 버전의 Android Emulator 문제 - 에뮬레이터 프로세스가 종료되었습니다. (0) | 2023.08.15 |
| x축 점에 대한 사용자 정의 텍스트로 그림 표시 (0) | 2023.08.15 |
| background-size: 표지 background-size: 표지 background-size: 표지 또는또는또는 (0) | 2023.08.15 |