Я не могу показать файл из хранилища в Laravel 6

У меня есть приложение Laravel 6.0, в котором пользователи могут загружать файлы на сервер, и оно хранится в файловой системе хранилища laravel. Система, которую я использую, работала в более старом проекте Laravel 5.6.

Ссылка, которую дает мне Контроллер:

domainame.com/public/file?folder=foldername&file=1569323440filename.png

Контроллер

public function getFile($foldername, $filename)
{
    $fullpath = "app/{$foldername}/{$filename}";

    return response()->download(storage_path($fullpath), null, [], null);
}

public function getFilesubfolder($foldername, $subfolder, $filename)
{
    $fullpath = "app/{$foldername}/{$subfolder}/{$filename}";

    return response()->download(storage_path($fullpath), null, [], null);
}

Просмотр

{{ route('file.show' ,['folder' => 'empresas' , 'file' => $factura->archivo])}}

Я получаю ошибку 404, потому что ссылка, к которой пытается получить доступ, не существует. В моем предыдущем проекте ссылка была примерно такой:

domainame.com/public/folder/file

Я создал символическую ссылку на систему хранения. Мне не хватает другого типа конфигурации или чего-то такого?


person ItsEdgar94    schedule 24.09.2019    source источник
comment
ваш domainame.com vhost должен иметь root в /public вашего проекта laravel. URL-адреса проекта не должны начинаться с /public   -  person N69S    schedule 24.09.2019
comment
@ N69S Я знаю, я отредактировал весь URL, потому что на нем был IP-адрес моего сервера :)   -  person ItsEdgar94    schedule 24.09.2019
comment
взгляните на это и правильно настройте виртуальный хост stackoverflow.com/questions/22217386/   -  person N69S    schedule 24.09.2019


Ответы (1)


Я решил свою ошибку, хочу опубликовать решение здесь, если люди приходят из поиска Google или чего-то еще:

Моя ошибка заключалась в том, что начиная с Laravel 6.0 маршруты переменных ДОЛЖНЫ быть буквальными.

В моем случае я изменил это:

{{ route('file.show' ,['folder' => 'empresas' , 'file' => $factura->archivo])}}

К этому:

{{ route('file.show' ,['foldername' => 'empresas' , 'filename' => $factura->archivo])}}

Я сломал свой разум, потому что не видел этой ошибки, надеюсь, это поможет любому, кто находится в моей ситуации

person ItsEdgar94    schedule 21.02.2020