【问题标题】:Using Laravel-Glide with public/uploads folder将 Laravel-Glide 与 public/uploads 文件夹一起使用
【发布时间】:2017-01-05 06:08:11
【问题描述】:

我想将Glide 用于我的所有图像源。

this instruction之后,我可以在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 的上传目录。

我在这里做错了什么?

【问题讨论】:

    标签: image laravel-5.3 php-glide


    【解决方案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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多