Laravel 7.如何从服务器(FTP)下载文件?

时间:2020-07-10 19:26:26

标签: laravel download ftp storage disk

我在config/filesystems.php文件中创建了一个磁盘

'ftp' => [
    'driver' => 'ftp',
    'host' => 'ftp.domain.org',
    'username' => 'username',
    'password' => 'password',
    'passive' => true,
    'timeout' => 30,
    'root' => '/',
    'url' => '/'
],

该连接已经过测试并且可以正常工作。在服务器上,此文件存在

$file_path = "/folder/aaa.txt";

但是我无法下载!在控制器中,我写道:

$file = Storage::disk('ftp')->download($file_path);
return response()->download($file);

这是结果:

Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException 文件“ HTTP / 1.0 200 OK缓存控制:无缓存,私有 内容处置:附件; filename = aaa.txt内容长度:0 内容类型:文本/纯文本日期:2020年7月10日,星期五,格林尼治标准时间 不存在

其他问题

不是下载它,而是如何在浏览器中显示相同的文件?在这种情况下,以下代码不起作用:

return response()->file($file_path);

1 个答案:

答案 0 :(得分:1)

response()->download($file)Storage::download($file)都将创建一个下载响应,因此您只需要两者之一。由于您的文件位于远程存储中,因此您只需保留以下内容即可:

return  Storage::disk('ftp')->download($file_path);

您还可以自定义文件名和标题。您还可以(可能)通过以下方式使文件内联显示:

return  Storage::disk('ftp')->download($file_path, 'any.txt', [
   'Content-Disposition' => 'inline'
]);