catlabinteractive/central-storage-client

CatLab中央存储的客户端。

v1.0.6 2021-05-15 08:49 UTC

This package is auto-updated.

Last update: 2024-09-27 16:52:28 UTC


README

中央存储是Laravel中构建的存储引擎。它包括重复上传检测,支持即时(但缓存)图像调整大小,并允许您设置'处理器'来处理更复杂的文件转换,如视频转码等。

设置

请遵循中央存储项目页面中描述的设置说明来设置存储系统。一旦设置完成,您可以将此库包含到项目中以开始存储资源。

设置您的客户端项目(在Laravel中)

中央存储提供标准REST API,因此可以被任何语言或框架消费。在这里我们将关注现有的Laravel客户端。请注意,实现新的客户端非常简单,因为只有少数方法需要实现。

在您的Laravel项目中运行 composer require catlabinteractive/central-storage-client

然后,在您想要上传文件的地方初始化客户端

$centralStorageClient = new CentralStorageClient(
    'https://your-central-storage-url.com',
    'your_key',
    'your_secret',
    'cdn_frontend_url' // (optional)
);

或者,如果您愿意,您可以使用使用默认配置文件的提供者

    'providers' => [
    
        [...]
        
        CatLab\CentralStorage\Client\CentralStorageServiceProvider::class,
    
    ],
    
    'aliases' => [
    
        [...]
        
        'CentralStorage' => CatLab\CentralStorage\Client\CentralStorageClientFacade::class,
    
    ]
]

PHP客户端消耗Symfony的文件对象。这意味着您可以直接从Laravel上传文件。客户端返回一个Eloquent模型'Asset',可以直接保存到数据库中(迁移文件可在central-storage-client/database中找到)。

<?php

use App\Models\Attachments\Asset;
use Illuminate\Http\Request;

class AssetController
{
    /**
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function upload(Request $request)
    {
        $file = $request->file()->first();
        if (!$file) {
            abort(400, 'Please provide a valid file.');
        }

        if (!$file->isValid()) {
            abort(400, 'File not valid: ' . $file->getErrorMessage());
        }

        /** @var Asset $asset */
        $asset = \CentralStorage::store($file);
        $asset->save();

        return response()->json($asset->getData());
    }
}