使用Laravel / Snappy生成PDF。但是,此错误:
尝试将其保存到存储器后已经存在文件名。
如何处理这些错误?
public function saveSnappyHeaderFooter()
{
//dd( storage_path());
$users = \App\User::all();
$data = ['users' => $users];
$SnappyPDF = SnappyPDF::loadView('pdf.snappyPDF.snappyHeaderFooter', $data);
$SnappyPDF->setOption('margin-top', '25mm');
$SnappyPDF->setOption('margin-bottom', '25mm');
$SnappyPDF->setOption('header-html', public_path() . '\pdf-parts\pdf-header.html');
$SnappyPDF->setOption('footer-html', public_path() . '\pdf-parts\pdf-footer.html');
$SnappyPDF->setOption('print-media-type', true);
$SnappyPDF->save(storage_path('app/files/'.Carbon::now() .'_' . 'myname2.pdf'));
}
答案 0 :(得分:1)
通常,这是处理PHP错误的方法:
try {
//your code
} catch (Exception $e) {
//handle errors
}
或者您可以使用以下方法询问文件是否存在:
if(!file_exists(storage_path('app/files/'.Carbon::now() .'_' . 'myname2.pdf'))){
//ok, code will run
}else{
// not ok, maybe change the name?
}
您也可以用laravel的方式来完成它:File::exists
或者也许您可以给我们更多细节。
注意
它不是一个反模式,不能100%确保文件不存在。我不知道您的用例,但我是说基于您正在生成文件名的事实。也许您应该使用更多的uniq模式。像GUID ...