场景
我们经常会将excel导入模板文件保存在一个目录,然后提供一个下载按钮,去下载这个模板文件,但是默认情况下thinkphp会在文件响应的时候,会让浏览器缓存一段时间,导致模板文件修改没有立即得到生效
// 下载模板
public function downloadExcelTpl($fileName)
{
$file = ErpFacade::getContainerAssetsPath() . DIRECTORY_SEPARATOR . $fileName;
return (new File($file))->header([
'Access-Control-Expose-Headers' => 'filename',
'filename' => $fileName,
]);
}
File类的默认缓存时间如下所示:
解决方法
我们可以手动设置文件缓存的时间为0,修改为如下代码即可
// 下载模板
public function downloadExcelTpl($fileName)
{
$file = ErpFacade::getContainerAssetsPath() . DIRECTORY_SEPARATOR . $fileName;
return (new File($file))->header([
'Access-Control-Expose-Headers' => 'filename',
'filename' => $fileName,
])->expire(0);// 设置缓存时间为0
}
评论 (0)