不要在response() - > file()上执行文本文件代码

时间:2017-05-23 18:19:36

标签: file laravel-5

在我的一个控制器中,我使用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);

1 个答案:

答案 0 :(得分:3)

您可以设置第二个参数,该参数将作为响应的标题。您可以查看Documentation以获取更多信息。

以下内容应该有效

return response()->file('test.txt', ['Content-Type' => 'text/plain']);