Menggunakan Laravel-Glide dengan folder publik/unggahan

Saya ingin menggunakan Glide untuk semua sumber gambar saya.

Mengikuti instruksi ini, saya bisa mendapatkan gambar di http://myweb.dev/img/test.jpg?w=200&filt=sepia.

masukkan deskripsi gambar di sini

Rute:

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

Pengendali:

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());
    }
}

Karena semua gambar saya berada di direktori /public/uploads, saya mengubahnya sebagai berikut.

Rute:

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

Pengendali

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());
}

Saat saya membuka http://myweb.dev/uploads/test.jpg?w=200&filt=sepia, saya mendapatkan gambar tanpa perubahan apa pun atau direktori .cache apa pun dibuat.

Saya mencoba base_path() dan /uploads juga, tetapi tidak berhasil juga. Saya menggunakan direktori unggahan untuk elfinder.

Apa yang saya lakukan salah di sini?

masukkan deskripsi gambar di sini


person shin    schedule 05.01.2017    source sumber


Jawaban (1)


Ini berhasil. Saya meletakkan gambar di direktori public/uploads.

Rute

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

Pengendali

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