royalcms / uploader
RoyalCMS 上传器包。
v5.0.2
2021-03-03 01:25 UTC
Requires
- php: >=5.5.9
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');