vue-파일 흐름-blob-의 형식-다운로드-파일 내보내기 작업
1. 먼저 서버가 반환하는 데이터 형식을 확인해야 한다.
요청 헤더에 추가:config.responseType = 'blob'
모든 인터페이스가 이 유형을 필요로 하지 않는 경우 인터페이스에 대한 판정을 내릴 수 있습니다.
// request
service.interceptors.request.use(
config => { //
if ( config.url === '/setting/exportData' ||
config.url.indexOf('export') > -1 ||
config.url.indexOf('Export') > -1) {
config.responseType = 'blob' //
}
if (getToken()) {
config.headers['access_token'] = getToken()
}
return config
},
error => {
// Do something with request error
// console.log(error) // for debug
Promise.reject(error)
}
)
2. 인터페이스가 백엔드에서 되돌아오는 파일 흐름을 요청합니다
//
onExport() {
if (this.dataList === '') {
this.$message({
type: 'error',
message: ' '
})
return
}
const fd = new FormData()
fd.append('id', this.id)
var exportFileName = ' ' // ,
exportData(fd)
.then(res => {
// res.data
// downloadUrl
downloadUrl(res.data, exportFileName)
})
.catch(err => {
this.$message({
type: 'error',
message: err.message
})
})
},
3. 파일 처리 downloadUrl--이 방법은 호출을 위한 일반적인 방법으로 쓸 수 있다
// iframe -- excel , type fileName
export function downloadUrl(res, name) {
const blob = new Blob([res], { type: 'application/vnd.ms-excel' }) // blob
const fileName = name + '.xlsx' //
const elink = document.createElement('a') // a
elink.download = fileName // a
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click() //
URL.revokeObjectURL(elink.href) // URL
document.body.removeChild(elink) //
}
4. i 브라우저에서 호환성 문제가 발생하여 downloadUrl을 조정합니다
// iframe -
export function downloadUrl(res, name) {
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
// for IE
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
const fileName = name + '.xlsx'
window.navigator.msSaveOrOpenBlob(blob, fileName)
} else {
// for Non-IE (chrome, firefox etc.)
const fileName = name + '.xlsx'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}
}
요약: 이로써 파일 흐름의 형식으로 파일을 내보내는 방식이 이미 실현되었다.보충 지식: vue에서 파일 흐름을 사용하여 다운로드(new Blob), 새 페이지를 열지 않고 다운로드
나는 쓸데없는 말을 더 이상 하지 않겠다. 모두들 코드를 직접 보는 것이 좋겠다.
export function download (url, params, filename) {
Message.warning(' ')
return axios.get(url, {
params: params,
responseType:'arraybuffer',
}).then((r) => {
const content = r.data
const blob = new Blob([content],{type:'application/vnd.ms-excel'})
if ('download' in document.createElement('a')) {
const elink = document.createElement('a')
elink.download = filename
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
Message.success(' ')
}
}).catch((r) => {
console.error(r)
Message.error(' ')
})
}
이상의 이 vue-파일 흐름-blob-의 형식-다운로드-파일 내보내기 작업은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리고 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.