Updated version of ThomasWelton's because that repo seems to be inactive
braunson/laravel-rackspace-cdn is a Laravel package for updated version of thomaswelton's because that repo seems to be inactive.
It currently has 1 GitHub stars and 38 downloads on Packagist (latest version 0.5.0).
Install it with composer require braunson/laravel-rackspace-cdn.
Discover more Laravel packages by braunson
or browse all Laravel packages to compare alternatives.
Last updated
README for Laravel 4.x is here
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',
]
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).
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.
OpenCloud::upload($container, $file, $name = null)
$container - (string) Name of the container to upload into;$file - (string / UploadedFile) Path to file, or instance of Symfony\Component\HttpFoundation\File\UploadedFile as returned by Request::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');
});
OpenCloud::delete($container, $file)