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

Laravel 7. How to download a file from server (FTP)?

我在 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";

但是我下载不了!我在controller里面写了:

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

这是结果:

Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException The file "HTTP/1.0 200 OK Cache-Control: no-cache, private Content-Disposition: attachment; filename=aaa.txt Content-Length: 0 Content-Type: text/plain Date: Fri, 10 Jul 2020 19:20:51 GMT" does not exist

附加问题

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

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

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

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

您还可以自定义文件名和headers。您还可以(可能)通过执行以下操作使文件显示为内联:

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