【问题标题】:Laravel 7 Browser doesn't download fileLaravel 7浏览器不下载文件
【发布时间】:2021-01-03 19:58:04
【问题描述】:

我在我的 Windows 10 机器上运行 Xampp,我的目录项目中有一个名为 files.txt 的文件。

[...]存储\应用\公共

我的config/filesystem.php 看起来像:

    'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
        'permissions' => [
            'file' => [
                'public' => 0664,
                'private' => 0600,
            ],
            'dir' => [
                'public' => 0775,
                'private' => 0700,
            ],
        ],
    ],

在我的控制器上,我正在调用要下载的文件

return response()->download(storage_path("app\public\\files.txt"),'down.txt');

我收到 200 状态好的,我收到的 headers 内容:

Content-Disposition:附件; filename=files.txt ,在浏览器 Xhr devtools 的响应中,我可以看到文件的内容,但不高兴下载不会发生。

【问题讨论】:

  • files.txt 之前的双反飞溅。改为app\public\files.txt

标签: php laravel


【解决方案1】:

你可以尝试指定标题吗:

$content = storage_path("app\public\files.txt");
$fileName = 'down.txt';
$headers = [
  'Content-type' => 'text/plain', 
  'Content-Disposition' => sprintf('attachment; filename="%s"', $fileName),
  'Content-Length' => strlen($content)
];   

return response()->download($content,$fileName, $headers);

【讨论】:

  • 好的,我的朋友,我会尝试这种方式,因为我已经通过另一种方式解决了这个问题(使用特定于下载的路径,参数是文件名,很快就会回来。一会儿
  • 嘿 Octet,问题仍然存在,下载不发生,仅在开发工具 chrome 上显示内容,可能是因为我是从调用 ajax 调用它的。
  • 哦,我明白了,您有一个带有下载链接的页面,该页面在 ajax 中调用您的控制器并返回下载响应?如果是这样,我想你不能这样做。您可以将目标空白的经典链接添加到您的路线,结果将是相同的,因为新标签将在下载时自动关闭
  • 是的,我做到了,现在可以工作了;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 2013-03-22
  • 2015-11-12
  • 2014-10-27
  • 2018-11-05
相关资源
最近更新 更多