braunson/laravel-rackspace-cdn

该软件包最新版本(0.5.0)没有可用的许可信息。

更新了ThomasWelton的版本,因为该仓库似乎已不活跃

0.5.0 2017-10-23 02:27 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:38:28 UTC


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)