laravel 5.6 如何从 SFTP 下载目录中列出的所有文件
How to Download all Files listed in a directory from SFTP in laravel 5.6
我是 laravel 的新手。我正在制作一个应用程序,我在其中检查在 SFTP 上提供的目录。通过查看文档,我成功地列出了该 SFTP 上托管的目录中的所有文件名。
我的下一个目标是将所有这些保存在本地文件夹中 public/InputFiles
但我该怎么做呢?我尝试了几种组合,但 none 有所帮助。
这是我所做的。在 config/filesystem.php
我有
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => public_path().'/InputFiles',
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'sftp' => [
'driver' => 'sftp',
'host' => 'exampleHost.com',
'username' => 'username',
'password' => 'password',
]
我的控制器有这个功能
public function getFilesFromFtp()
{
//all files are present inside 'outgoing' folder
$file_list = Storage::disk('sftp')->allFiles('outgoing/');
foreach ($file_list as $key => $value) {
# code...
//output the name of the files
$this->printVariable(str_replace("outgoing/", "", $value));
Storage::disk('public')->put(str_replace("outgoing/", "", $value), Storage::disk('sftp')->download($value));
}
例如,我在 SFTP 的传出文件夹中有一个名为 sample.txt
的文件。在此文件中,我的文本为 Sample text
.
通过上述方法,我能够看到在所需位置制作的sample.txt
文件,但其内容如下
HTTP/1.0 200 OK
Cache-Control: no-cache, private
Content-Disposition: attachment; filename="sample.txt"
Content-Length: 12
Content-Type: text/plain
Date: Thu, 19 Apr 2018 10:35:10 GMT
这不是我想要的。我实际上想保存文件,因为它就像在 SFTP 上一样。我该怎么做?
刚刚将行更改为
Storage::disk('public')->put(str_replace("outgoing/", "", $value), Storage::disk('sftp')->get($value));
所以基本上我是从 sftp 获取文件并将其放在本地目录中。无需下载。
我是 laravel 的新手。我正在制作一个应用程序,我在其中检查在 SFTP 上提供的目录。通过查看文档,我成功地列出了该 SFTP 上托管的目录中的所有文件名。
我的下一个目标是将所有这些保存在本地文件夹中 public/InputFiles
但我该怎么做呢?我尝试了几种组合,但 none 有所帮助。
这是我所做的。在 config/filesystem.php
我有
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => public_path().'/InputFiles',
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'sftp' => [
'driver' => 'sftp',
'host' => 'exampleHost.com',
'username' => 'username',
'password' => 'password',
]
我的控制器有这个功能
public function getFilesFromFtp()
{
//all files are present inside 'outgoing' folder
$file_list = Storage::disk('sftp')->allFiles('outgoing/');
foreach ($file_list as $key => $value) {
# code...
//output the name of the files
$this->printVariable(str_replace("outgoing/", "", $value));
Storage::disk('public')->put(str_replace("outgoing/", "", $value), Storage::disk('sftp')->download($value));
}
例如,我在 SFTP 的传出文件夹中有一个名为 sample.txt
的文件。在此文件中,我的文本为 Sample text
.
通过上述方法,我能够看到在所需位置制作的sample.txt
文件,但其内容如下
HTTP/1.0 200 OK
Cache-Control: no-cache, private
Content-Disposition: attachment; filename="sample.txt"
Content-Length: 12
Content-Type: text/plain
Date: Thu, 19 Apr 2018 10:35:10 GMT
这不是我想要的。我实际上想保存文件,因为它就像在 SFTP 上一样。我该怎么做?
刚刚将行更改为
Storage::disk('public')->put(str_replace("outgoing/", "", $value), Storage::disk('sftp')->get($value));
所以基本上我是从 sftp 获取文件并将其放在本地目录中。无需下载。