在我的一个控制器中,我使用response()->file()
函数将文件返回给用户。如果图像为.png
,.jpg
或.gif
,则显示图像,如果是.txt
或.ini
文件,则显示文本文件。
但是,如果文件是.html
或.js
文件或其中包含代码的任何其他类型的文件格式,则响应函数将呈现并执行该代码
如何阻止laravel渲染并执行正在显示的“文本文件”?
修改
感谢mozammil,我找到了一个完美的解决方案。
只需将您的代码调整为此类
即可 $mimeType = File::mimeType($filePath);
if($mimeType == 'application/x-httpd-php' OR $mimeType == 'text/html' OR $mimeType == 'text/javascript' OR $mimeType == 'text/css' OR $mimeType == 'application/xhtml+xml' OR $mimeType == 'application/javascript') {
$mimeType = ['Content-Type' => 'text/plain'];
} else {
$mimeType = [$mimeType];
}
return response()->file($filePath, $mimeType);
答案 0 :(得分:3)
您可以设置第二个参数,该参数将作为响应的标题。您可以查看Documentation以获取更多信息。
以下内容应该有效
return response()->file('test.txt', ['Content-Type' => 'text/plain']);