Получить изображение из папки ресурсов - Laravel - PullRequest
3 голосов
/ 10 марта 2020

Можно ли получить и отобразить изображение из папки ресурсов вместо папки publi c? Если да, как я могу это сделать?

Ответы [ 5 ]

4 голосов
/ 10 марта 2020
Папка

resources не должна использоваться для store images Это не то место, где должны быть ресурсы publi c, stati c (например, изображения, js, css et c).

Поместите их в папку public/

Каталог resources/assets/ предназначен для хранения, так сказать, pre-processed активов.

Например, если у вас есть 3 разных CSS файлов, но хотите объединить их в один и отобразить этот новый отдельный файл в браузере (для увеличения скорости загрузки страницы). В этом сценарии файлы 3 CSS будут размещены где-то внутри resources / assets /.

Эти файлы могут быть processed, и новый объединенный файл будет go внутри publi c.

Ссылка:

https://laracasts.com/discuss/channels/laravel/image-assets?page=1

2 голосов
/ 10 марта 2020

Вы можете создать маршрут специально для отображения изображений.

Route::get('/resources/app/uploads/{filename}', function($filename){
    $path = resource_path() . '/app/uploads/' . $filename;

    if(!File::exists($path)) {
        return response()->json(['message' => 'Image not found.'], 404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

Теперь вы можете go для localhost / resources / app / uploads / filename.png, и он должен отображать изображение.
ссылка Как получить изображение из ресурсов в Laravel?
Но еще раз скажите, что папка ресурсов не должна использоваться для хранения изображений Это не то, где публикуются c, stati c активы (например, изображения , js, css et c) должно быть. как @sehdev говорит свой ответ ..

1 голос
/ 10 марта 2020

Вы можете создать символическую ссылку:

ln -s /path/to/laravel/resources/images /path/to/laravel/public/images

Хотя, как уже отмечали другие пользователи, каталог resource не предназначен для публичного использования.

0 голосов
/ 10 марта 2020

Я согласен с @sehdev.

Однако, если вы все еще хотите подать свое изображение из каталога resources, вот решение, которое выполняет работу.

На ваш взгляд:

<img src="/your-image" />

В маршруте:

Route::get('/your-image', function ()
{
   $filepath = '/path/to/your/file';

    $file = File::get($filepath);
    $type = File::mimeType($filepath);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);
    $response->header("Content-Length", File::size($filepath));
    return $response;
})

это не лучшее решение. Я предлагаю вам переместить ваши активы в каталог publi c.

Редактировать: использовать функции laravel. Я предлагаю не брать путь к файлу из URL, потому что он может подчиняться Обратный путь в каталогах .

0 голосов
/ 10 марта 2020

Ответ на ваш вопрос находится в Laravel в c: https://laravel.com/docs/5.7/helpers#method -app-path

$path = base_path('resources/path/to/img_dir');

...