Excel 如何使用laravel和vuejs下载文件
我在laravel中创建了一个文件.xlsx,并将其发送到vuejs,如下所示Excel 如何使用laravel和vuejs下载文件,excel,vue.js,laravel-5.8,Excel,Vue.js,Laravel 5.8,我在laravel中创建了一个文件.xlsx,并将其发送到vuejs,如下所示 function excel (Request $request){ $dlink = public_path('storage/reports/comunicacion_piciz.xlsx'); $writer = new Xlsx($spreadsheet); $writer->save($dlink); $headers = ["Content-Type" => "applicat
function excel (Request $request){
$dlink = public_path('storage/reports/comunicacion_piciz.xlsx');
$writer = new Xlsx($spreadsheet);
$writer->save($dlink);
$headers = ["Content-Type" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
return response()->download($dlink,'comunicacion_piciz.xlsx', $headers);
}
在vuejs中调用此方法时,请使用以下代码
sendFile () {
request.post(`api/log/excel`, {array: this.excelData, title: this.log})
.then(res => {
var newBlob = new Blob([res.data], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})
console.log(res.data)
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob)
return
}
const data = window.URL.createObjectURL(newBlob)
var link = document.createElement('a')
link.href = data
link.download = 'comunicacion_piciz.xlsx'
link.click()
setTimeout(function () {
window.URL.revokeObjectURL(data)
}, 100)
this.$spinner.close()
})
.finally(() => {
this.$spinner.close()
})
}
该文件是在服务器中创建的,工作正常,但目前我将其发送到vue并下载,它已损坏
传统信息
我用writer save时也试过这句话
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Reporte Excel"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
同样,我认为我在vue部分遗漏了一些东西,但不确定这里有一个简单的解决方案: 更改存储文件的方法,而不是发送并返回文件名 创建其他方法或新控制器以下载文件
this.loading = true
axios.post(your_url_to_create_xlsx_and_store,data).then(resp => {
this.loading = false;
window.open(your_url_to_download_your_file?file="+resp.data.filename,"_blank")
})