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'
]);
我在 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'
]);