someline/someline-image

Someline Image 是一个辅助服务,用于处理上传的图片并存储无重复的图片。

v2.3.6 2020-08-06 03:12 UTC

README

Latest Version Software License Total Downloads

Someline Image 是一个辅助服务,用于处理上传的图片并存储无重复的图片。

为 Laravel 和 Someline Starter 构建。

安装

通过 Composer

将 composer 包安装到您的 Laravel 项目中

composer require someline/someline-image

将服务提供者添加到 config/app.php

    'providers' => [
        ...
        Someline\Image\SomelineImageServiceProvider::class,
        ...
    ],

发布配置文件。

php artisan vendor:publish

发布后,Rest Client 的配置文件为 config/someline-image.php,您需要配置它以使用 Rest Client。

使用方法

路由

Route::get('/image/{name}', 'ImageController@showOriginalImage');
Route::post('/image', 'ImageController@postImage');

多个 Imageables

在模型中使用

    use SomelineHasImageablesTrait;

使用方法

/** @var SomelineImage $somelineImage */
$somelineImage = SomelineImage::find(1);

/** @var User $user */
$user = User::find(1);

// save image relations smartly with sequence support (recommended)
$user->syncImages([1, 2], ['type' => 'cover', 'data' => json_encode('a')]);

// save image relations via save
$user->images()->save($somelineImage, ['type' => 'cover', 'data' => json_encode('a')]);

// save image relations via attach
$user->images()->attach(1, ['type' => 'cover', 'data' => json_encode('a')]);

// update image relations via sync
$user->images()->sync([1]);

// set as main image
$user->setAsMainImage($somelineImage);

// set as type main image
$user->setAsTypeMainImage('cover', $somelineImage);

// get all images
print_r($user->getImages()->toArray());

// get first main image
print_r($user->getMainImage()->toArray());

// get all main images
print_r($user->getMainImages()->toArray());

// get all type images
print_r($user->getTypeImages('cover')->toArray());

// get all type images and are main images
print_r($user->getTypeMainImages('cover')->toArray());

示例控制器文件

app/Http/Controllers/ImageController.php

<?php namespace App\Http\Controllers;

use Exception;
use Illuminate\Http\Request;
use Someline\Image\Controllers\SomelineImageController;
use Someline\Models\Image\SomelineImage;
use Someline\Image\SomelineImageService;

class ImageController extends Controller
{

    public function postImage(Request $request)
    {
        $somelineImageService = new SomelineImageService();
        $file = $request->file('image');

        $somelineImage = null;
        try {
            /** @var SomelineImage $somelineImage */
            $somelineImage = $somelineImageService->handleUploadedFile($file);
        } catch (Exception $e) {
            return 'Failed to save: ' . $e->getMessage();
        }

        if (!$somelineImage) {
            return 'Failed to save uploaded image.';
        }

        $somelineImageId = $somelineImage->getSomelineImageId();
        return 'Saved: ' . $somelineImage->getImageUrl();
    }

    public function showOriginalImage($image_name)
    {
        return SomelineImageController::showImage('original', $image_name);
    }

}

测试

phpunit

贡献

有关详细信息,请参阅 CONTRIBUTING

鸣谢

许可协议

MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件