blob
BLOB就是使用二進(jìn)制保存數(shù)據(jù)。
數(shù)據(jù)的導(dǎo)出,get方式
/**
* 數(shù)據(jù)導(dǎo)出
*/
exportData (searchForm) {
this.$http({
method: 'get', // 請求方式
url: Apis.EXPORT_DATA, // 請求地址
params: { // 請求參數(shù)
startDate: searchForm.startDate,
endDate: searchForm.endDate,
orderNo: searchForm.orderNo,
carNo: searchForm.carNo,
entryBy: searchForm.entryBy,
status: searchForm.status,
insurer: searchForm.insurer
},
responseType: 'blob' // 重點,請求的數(shù)據(jù)類型
})
.then(response => {
/* 兼容ie內(nèi)核,360瀏覽器的兼容模式 */
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
let blob = new Blob([response.data])
window.navigator.msSaveOrOpenBlob(blob, '數(shù)據(jù)導(dǎo)出.xls')
} else {
/* 火狐谷歌的文件下載方式 */
var blob = new Blob([response.data])
var downloadElement = document.createElement('a')
var href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = '數(shù)據(jù)導(dǎo)出.xls'
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
}
})
.catch(response => {
console.log(response)
})
}
文件的下載,post方式
downloadOrder (row) {
this.$http.post(Apis.DOWNLOAD+`/${row.cargoOderId}`, {admin: '', keys: '123', keyword: '123'}, {responseType: 'blob'})
.then(response => {
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
let blob = new Blob([response.data])
window.navigator.msSaveOrOpenBlob(blob, `${row.orderNo}.pdf`)
} else {
var blob = new Blob([response.data])
var downloadElement = document.createElement('a')
var href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = `${row.orderNo}.pdf`
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
}
})
.catch(response => {
console.log(response)
})
}
疑惑:{admin: '', keys: '123', keyword: '123'},為什么要使用這句代碼?
bug:如果沒有上面那句代碼,下載的pdf文件打開居然需要密碼,可我沒有設(shè)置密碼啊。設(shè)置了上面那句代碼以后,pdf文件才可以打開。一臉懵逼....,哪位大佬可以幫忙解惑一下,非常感謝