Использование Laravel-Glide с папкой public/uploads

Я хочу использовать Glide для всех моих источников изображений.

Следуя этой инструкции, я могу получить изображение по адресу http://myweb.dev/img/test.jpg?w=200&filt=sepia.

введите здесь описание изображения

Маршрут:

Route::get('/img/{path}', 'ImageController@show')->where('path', '.*');

Контроллер:

namespace App\Http\Controllers;

use Illuminate\Contracts\Filesystem\Filesystem;
use League\Glide\Responses\LaravelResponseFactory;
use League\Glide\ServerFactory;

class ImageController extends Controller
{
    public function show(Filesystem $filesystem, $path)
    {
        $server = ServerFactory::create([
            'response' => new LaravelResponseFactory(app('request')),
            'source' => $filesystem->getDriver(),
            'cache' => $filesystem->getDriver(),
            'cache_path_prefix' => '.cache',
            'base_url' => 'img',
        ]);

        return $server->getImageResponse($path, request()->all());
    }
}

Поскольку все мои изображения находятся в каталоге /public/uploads, я изменил его следующим образом.

Маршрут:

Route::get('uploads/{path}', 'ImageController@show')->where('path', '.*');

Контроллер

public function show(Filesystem $filesystem, $path)
{
    $server = ServerFactory::create([
        'response' => new LaravelResponseFactory(app('request')),
        'source' => public_path(),
        'cache' => public_path(),
        'cache_path_prefix' => '.cache',
        'base_url' => 'uploads',
    ]);

    return $server->getImageResponse($path, request()->all());
}

Когда я перехожу на http://myweb.dev/uploads/test.jpg?w=200&filt=sepia, я получаю изображение без каких-либо изменений, и каталог .cache не создается.

Я также пробовал base_path() и /uploads, но тоже не сработало. Я использую каталог загрузки для elfinder.

Что я здесь делаю неправильно?

введите здесь описание изображения


person shin    schedule 05.01.2017    source источник


Ответы (1)


Это сработало. Я помещаю изображения в каталог public/uploads.

Маршрут

Route::get('/img/{path}', 'ImageController@show')->where('path', '.*');

Контроллер

namespace App\Http\Controllers;

use Illuminate\Contracts\Filesystem\Filesystem;
use League\Glide\Responses\LaravelResponseFactory;
use League\Glide\ServerFactory;

class ImageController extends Controller
{
    public function show(Filesystem $filesystem, $path)
    {
        $server = ServerFactory::create([
            'response' => new LaravelResponseFactory(app('request')),
            'source' => public_path('uploads'),
            'cache' => public_path('uploads'),
            'cache_path_prefix' => '.cache',
            'base_url' => 'img',
        ]);

        return $server->getImageResponse($path, request()->all());
    }
}
person shin    schedule 07.01.2017