Javascript 프런트엔드 다운로드 백그라운드에서 전송되는 파일 흐름 코드 실례
1972 단어 Javascript다운로드파일흐르다
url: '/app/downloadApp',
method: 'get',
responseType: 'blob',
params: data
수신 매개변수 형식을 responseType: "blob"으로 설정합니다.
downloadFile(res, fileName) {
if (!res) {
return
}
if (window.navigator.msSaveBlob) { // IE IE
try {
window.navigator.msSaveBlob(res, fileName) // res , , var data = new Blob([res.data]) ,fileName
// window.navigator.msSaveOrOpenBlob(res, fileName); // ,
} catch (e) {
console.log(e)
}
} else {
let url = window.URL.createObjectURL(new Blob([res]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName)//
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //
window.URL.revokeObjectURL(url) // blob
}
},
download(){
var data = {
appId:this.appId
}
downloadAppAjax(data).then(res => {
const filename = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]);
console.log(filename)
this.downloadFile(res.data,filename)
})
}
여기의 다운로드 AppAjax는 백엔드 인터페이스를 호출하여 데이터를 요청하고 백엔드에서 되돌아오는 데이터는 파일 이름이 없습니다. 마지막으로header Content-Disposition 속성에서attachment를 발견합니다.filename=app.jpg그래서 우리가 다운로드를 통해 자동으로 이름을 바꾸려면 filename을 꺼내야 한다. 여기서 decodeURI를 사용하여 Content-Disposition 속성 값을 디코딩하여 filename을 얻는다.
decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]);
파일 흐름과 파일 이름을 가져와서 파일 흐름을 수신하고 주소를 만듭니다.let url =window.URL.createObjectURL(new Blob([res]))
이어서 a 라벨을 이용하여 다운로드하면 된다.이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java,python,JavaScript 및 jquery 순환 문장의 차이2. 자바 순환 문장 조건 문장이 무엇이든지 간에 코드 블록은 최소한 한 번 실행되고do/while 순환을 사용할 수 있습니다.do/while 문법: 즉, 코드 블록을 먼저 집행한 다음에 조건이 성립되었는지 판단하고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.