braunson/laravel-rackspace-cdn
| Install | |
|---|---|
composer require braunson/laravel-rackspace-cdn |
|
| Latest Version: | 0.5.0 |
| PHP: | >=5.4.0 |
| Last Updated: | Oct 23, 2017 |
| Links: | GitHub · Packagist |
README for Laravel 4.x is here
Installation
Run command in your terminal to include this package as a dependency:
composer require braunson/laravel-rackspace-opencloud
Register the OpenCloud service provider and alias the OpenCloud, Str (removed in Laravel 5.0+) facades by adding it to the providers and aliases arrays in the config/app.php file.
For Laravel 5.5 and later don't need (auto discovery).
For Laravel 5.2 - 5.4:
'providers' => [
Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider::class
];
'aliases' => [
'OpenCloud' => Braunson\LaravelRackspaceCdn\Facades\OpenCloud::class,
'Str' => Illuminate\Support\Str::class,
]
For Laravel 5.1 and earlier:
'providers' => [
'Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider'
]
'aliases' => [
'OpenCloud' => 'Braunson\LaravelRackspaceCdn\Facades\OpenCloud',
'Str' => 'Illuminate\Support\Str',
]
Configuration
Copy the config files into your project by running:
php artisan vendor:publish --provider="Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider"
Edit the config file to include your username, api key, region and url (internal or public).
Usage
Artisan Commands
Upload files via the command line.
Synchronize a whole directory. Copies all files to /public/assets:
php artisan cdn:sync public/assets
Copies all files to /assets trimming 'public' from the path:
php artisan cdn:sync public/assets --trim=public
You can configure your package.json to do this as NPM task:
"scripts": {
"cdn:sync": "php artisan cdn:sync public/assets --trim=public"
},
The sync command will save a file adjacent to the synchronized directory. It contains the http and https urls for your container. Along with a md5 hash of the directory. In this way when a file changes inside a directory and is reuploaded you get a new cache busted URL.
If you are using the URL helper then it will return a CDN url for a file, if it finds a *.cdn.json file adjacent to one of it's parent directories.
URL::asset('assets/image.jpg');
You should be able to run php artisan cdn:sync public/assets --trim=public before or during a deployment and once complete all files being called by URL::asset() will return a CDN resource.
Upload to CDN
OpenCloud::upload($container, $file, $name = null)
$container- (string) Name of the container to upload into;$file- (string / UploadedFile) Path to file, or instance ofSymfony\Component\HttpFoundation\File\UploadedFileas returned byRequest::file();$name- (string) Optional file name to be used when saving the file to the CDN.
Example:
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');
});
Delete from CDN
OpenCloud::delete($container, $file)
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 0.5.0 | >=5.4.0 | ~4.0 | | ||
| 0.4.1 | >=5.3.0 | 4.x | ||
| 0.4.0 | >=5.3.0 | 4.x | ||
| 0.3.0 | >=5.3.0 | 4.x | ||
| 0.2.3 | >=5.3.0 | 4.0.x | ||
| 0.2.2 | >=5.3.0 | 4.0.x | ||
| 0.2.1 | >=5.3.0 | 4.0.x | ||
| 0.0.2 | >=5.3.0 | 4.0.x | ||
| 0.0.1 | >=5.3.0 | 4.0.x |