我使用barryvdh创建pdf文件。但是我想向用户创建一些交互式页面,例如在创建PDF时“请稍候”并禁用pdf按钮,然后在创建PDf完成后再次启用该按钮。
所以这是我的控制器:
$pdf = PDF::loadView('panel.invoice.pdf', $data)->setWarnings(false)->setPaper('a4', 'portrait');
$pdf->save(storage_path($code['code'].'.pdf'));
return response()->file(storage_path($code['code'].'.pdf'));
这是我的ajax:
$(document).off('click', '.pdf').on('click', '.pdf', function(e){
disBtn(btn_saving);
loadItem(selector);
$.ajax({
url: 'invoice/pdf',
type: "POST",
data: new FormData( $('#list_form')[0]),
contentType: false,
dataType: "json",
cache: false,
processData:false,
success : function ( response ) {
finishload(selector);
location.reload();
},
error : function ( jqXhr, response, errorThrown ) {
}
});
});
但是如果我使用ajax并卡住,则不会显示pdf视图,但响应为200。
然后,该如何处理存储中的文件?用户从pdf视图下载后如何删除pdf文件? 删除时不添加以下内容:
"return response()->download(storage_path($code['code'].'.pdf'))->deleteFileAfterSend(true);"