braunson / laravel-rackspace-cdn
该软件包最新版本(0.5.0)没有可用的许可信息。
更新了ThomasWelton的版本,因为该仓库似乎已不活跃
0.5.0
2017-10-23 02:27 UTC
Requires
- php: >=5.4.0
- alchemy/zippy: ~0.1
- illuminate/support: ~4.0 || ~5.0
- rackspace/php-opencloud: ~1.13.0
README
Laravel 4.x 的 README 在这里:here
安装
在终端运行命令以将此软件包作为依赖项包含
composer require braunson/laravel-rackspace-opencloud
在 config/app.php
文件中将 OpenCloud 服务提供者和别名(移除于 Laravel 5.0+)添加到提供者和别名数组中。
对于 Laravel 5.5 及以后版本,不需要(自动发现)。
对于 Laravel 5.2 - 5.4
'providers' => [ Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider::class ];
'aliases' => [ 'OpenCloud' => Braunson\LaravelRackspaceCdn\Facades\OpenCloud::class, 'Str' => Illuminate\Support\Str::class, ]
对于 Laravel 5.1 及更早版本
'providers' => [ 'Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider' ]
'aliases' => [ 'OpenCloud' => 'Braunson\LaravelRackspaceCdn\Facades\OpenCloud', 'Str' => 'Illuminate\Support\Str', ]
配置
通过运行将配置文件复制到您的项目中
php artisan vendor:publish --provider="Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider"
编辑配置文件以包含您的用户名、API密钥、区域和URL(内部或公开)。
用法
Artisan 命令
通过命令行上传文件。
同步整个目录。将所有文件复制到 /public/assets
php artisan cdn:sync public/assets
将所有文件复制到 /assets
,从路径中删除 'public'。
php artisan cdn:sync public/assets --trim=public
您可以将配置添加到 package.json
中,以便将其作为 NPM 任务执行
"scripts": { "cdn:sync": "php artisan cdn:sync public/assets --trim=public" },
同步命令将在同步目录旁边的文件中保存文件。它包含容器中的 http 和 https URL,以及目录的 md5 哈希。这样,当目录中的文件更改并重新上传时,您将获得一个新的缓存清除 URL。
如果您使用 URL 助手,则它将返回一个文件的可用 CDN URL,如果它在其父目录之一旁边找到 *.cdn.json
文件。
URL::asset('assets/image.jpg');
您应该在部署之前或期间运行 php artisan cdn:sync public/assets --trim=public
,完成后,所有通过 URL::asset()
调用的文件都将返回 CDN 资源。
上传到 CDN
OpenCloud::upload($container, $file, $name = null)
$container
- (string) 要上传到的容器名称;$file
- (string / UploadedFile) 文件路径,或Symfony\Component\HttpFoundation\File\UploadedFile
实例,如Request::file()
返回;$name
- (string) 保存文件到 CDN 时使用的可选文件名。
示例
Route::post('/upload', function() { // '\Input' alias was removed from the default aliases in Laravel 5.2+ if(Request::hasFile('image')){ $file = OpenCloud::upload('my-container', Request::file('image')); } $cdnUrl = $file->PublicURL(); // Do something with $cdnUrlth return Redirect::to('/upload'); });
从 CDN 删除
OpenCloud::delete($container, $file)