Laravel 7. Как скачать файл с сервера (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";

Но не могу скачать! В контроллере написал:

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

И вот результат:

Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException Файл HTTP / 1.0 200 OK Cache-Control: no-cache, частное Content-Disposition: вложение; filename = aaa.txt Content-Length: 0 Content-Type: text / plain Дата: Пт, 10 июля 2020 г., 19:20:51 GMT не существует

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

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

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

person marco987    schedule 10.07.2020    source источник
comment
Storage::download уже является ответом на загрузку. Второй тебе не нужен. Просто сделай return Storage::disk('ftp')->download($file_path);   -  person apokryfos    schedule 10.07.2020
comment
Большое спасибо @apokryfos! Оно работает! Я все еще неопытен ... извините.   -  person marco987    schedule 10.07.2020
comment
@apokryfos Пожалуйста, вставьте это как ответ. Ответы просматриваются, ищут и визуализируют лучше, чем комментарии.   -  person Tarek Adam    schedule 10.07.2020


Ответы (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'
]);
person apokryfos    schedule 10.07.2020
comment
(или кто-то другой) @apokryfos Не могли бы вы взглянуть на мою Дополнительную проблему, пожалуйста? - person marco987; 11.07.2020