proshore/laravel-image-upload

简单的图像上传和缩略图管理

dev-master 2016-09-07 16:32 UTC

This package is auto-updated.

Last update: 2024-09-06 05:50:07 UTC


README

laravel5的基本图像上传和缩略图管理包。

安装

首先,通过Composer引入该包。

"require": {
    "proshore/laravel-image-upload": "dev-master"
}

然后,如果您使用Laravel 5,请将服务提供者在 config/app.php 中包含。

'providers' => [
    LaravelImage\ImageUploadServiceProvider::class,
];

为了方便,在此文件底部添加一个外观别名

'aliases' => [
    'ImageHelper' => LaravelImage\Image::class,
];

最后发布配置

php artisan vendor:publish --provider="LaravelImage\ImageUploadServiceProvider"

配置

您可以将默认缩略图配置添加到 config/laravelimage.php

用法

上传图像

在您的控制器中,通过依赖注入获取对图像上传服务的访问权限

class ContentsController extends Controller
{
    ...

    protected $file;

    /**
     * @param ImageUploadService $file
     */
    public function __construct(ImageUploadService $file)
    {
        ...

        //set properties for file upload
        $this->file = $file;
        $this->file->setUploadField('image'); //default is image
        $this->file->setUploadFolder('contents'); //default is public/uploads/contents
    }

    ...

然后,在您的存储或更新方法中执行图像上传

/**
 * Store method
 */
public function store(ContentRequest $request)
{
    $input = $request->all();

    if (Input::hasFile('image') && $this->file->upload()) {
        //file is uploaded, get uploaded file info
        $uploadedFileInfo = $this->file->getUploadedFileInfo();

        ...
        //do whatever you like with the information
        $input = array_merge($input, $uploadedFileInfo);
    }

    ...
}

/**
 * Update method
 */
public function update(Request $request, $id)
{
    ...

    if (Input::hasFile('image') && $this->file->upload()) {
        ...

        //remove old files
        if ( ! empty($model->file_path)) {
            $this->file->clean(public_path($model->file_path), true);
        }
    }

    ...
}

使用外观显示图像

从已注册的缩略图中显示。如果注册的缩略图不存在,它将尝试生成新的缩略图。

{!!
    \LaravelImage\LaravelImage::image($model->file_path, $model->image, [
        'alt' => $model->original_file_name,
        'size' => 'thumb'
    ])
!!}

或者,在运行时创建自定义尺寸的图像

{!!
    \LaravelImage\LaravelImage::image($model->file_path, $model->image, [
        'alt' => $model->original_file_name,
        'size' => [
            'custom' => ['w' => 300, 'h' => 200, 'crop' => true]
        ]
    ])
!!}

待办事项

  • 图像缓存实现
  • 完整文档