royalcms/uploader

RoyalCMS 上传器包。

v5.0.2 2021-03-03 01:25 UTC

This package is auto-updated.

Last update: 2024-09-29 05:09:05 UTC


README

在 RoyalCMS 中上传文件并将其存储在文件系统/云存储对一些开发者来说既不简单也不容易。本包提供了一个简单的方式来做到这一点,并附带流畅的接口,您可能会喜欢。

配置

上传器配置位于 packages/royalcms/uploader/uploader.php,您可以在其中调整默认文件提供者和默认文件可见性。

文件提供者

本包包含两个文件提供者,来自 HTTP 请求和本地文件系统。在上传文件之前,您可以设置文件提供的位置。示例

RC_Uploader::from('request')->upload('avatar'); // see the supported providers at config/uploader.php

// Or you can use the magic methods...
RC_Uploader::fromRequest()->upload('file');
RC_Uploader::fromLocal()->upload('/path/to/file');

如果您在调用 RC_Uploader 门面方法之前没有先调用 from 方法,上传器将假设您想使用默认提供者。

// If your default provider is local, it will automatically use the local provider.
RC_Uploader::upload('/path/to/file');

用法

上传文件

现在,上传文件非常简单,就像这样

<?php

namespace App\Http\Controllers;

use RC_Uploader;
use Royalcms\Component\Http\Request;

class UserController extends Controller
{
    /**
     * Change user's avatar.
     *
     * @param  \Royalcms\Component\Http\Request  $request
     * @return \Royalcms\Component\Http\Response
     */
    public function changeAvatar(Request $request)
    {
        RC_Uploader::upload('avatar');

        //
    }
}

upload 方法接受一个请求键或文件所在位置(基于文件提供者)作为第一个参数,并返回一个布尔值:如果成功则返回 true,如果失败则返回 false

您可以将一个 Closure 回调作为第二个参数传递,如果文件成功上传,则会调用此回调

// The parameter in the Closure is a full uploaded filename...
RC_Uploader::upload('avatar', function ($filename) {
    Photo::create(['photo' => $filename]);
});

RC_Uploader::upload('/path/to/file', function ($filename) {
    $user = User::find(12);

    $user->update(['avatar' => $filename]);
});

选择文件存储

自动地,上传器将使用您的默认 [文件系统] 磁盘来存储文件。但是,您可以使用 uploadTo 方法选择文件存储的位置

// see the supported uploadTo parameter at config/filesystems.php
RC_Uploader::uploadTo('s3')->upload('avatar');

// Or you can use the magic methods...
RC_Uploader::uploadToS3();
RC_Uploader::uploadToFtp();
RC_Uploader::uploadToLocal();
RC_Uploader::uploadToRackspace();

设置文件夹

也许您想指定文件将要存储的文件夹。只需使用 toFolder 方法即可

RC_Uploader::toFolder('photos')->upload('photo');

重命名文件

使用 renameTo 方法调整您想要的文件名

RC_Uploader::renameTo('my-awesome-videos')->upload('/path/to/video');

如果您忽略此方法,则文件将被重命名为随机且唯一的名称。

文件可见性

您可以使用 setVisibility 方法设置 [文件系统]

RC_Uploader::setVisibility('public')->upload('avatar');

或者就忽略它,上传器将根据您的配置设置可见性。

方法链式调用

上述所有方法(除 upload 方法外)都是可链式的。在调用 upload 方法之前,您可以自由地调用其他方法。示例

RC_Uploader::from('local')->uploadToS3()->toFolder('banners')->renameTo('cool-banner')->setVisibility('public')->upload('/path/to/banner');