Laravel 7. Как скачать файл с сервера (FTP)? - PullRequest
0 голосов
/ 10 июля 2020

Создал диск в 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 Cache-Control: без кеша, частное Content-Disposition: вложение; filename = aaa.txt Content-Length: 0 Content-Type: text / plain Дата: Пт, 10 июля 2020 г., 19:20:51 GMT "не существует

Дополнительная проблема

Вместо загрузки, как мне отобразить тот же файл в браузере? Следующий код в этом случае не работает:

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

1 Ответ

0 голосов
/ 10 июля 2020

Оба 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'
]);
...