railroad/remotestorage
| Install | |
|---|---|
composer require railroad/remotestorage |
|
| Latest Version: | v3.0.0 |
| PHP: | ^8.2 |
| Last Updated: | Aug 19, 2024 |
| Links: | GitHub · Packagist |
remotestorage
Wrapper for slightly easier use of league/flysystem with AWS S3 by our Laravel application.
Installation, Configuration, Use
Installation
Run $ composer vendor:publish to copy the package's configuration file "/config/remotestorage.php" to your application's "/config" directory.
(assuming you're using Composer, Laravel, and AWS S3)
Configuration
Define the following environmental variables with appropriate values:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
- AWS_BUCKET
Add the service provider (\Railroad\RemoteStorage\Providers\RemoteStorageServiceProvider) to the 'providers array in you application's /config/app.php:
'providers' => [
# ...
\Railroad\RemoteStorage\Providers\RemoteStorageServiceProvider::class,
]
Run $ php artisan vendor:publish to copy the config file and create a remotestorage.php file in your application's /config directory. This will take the values you supplied in the .env file and pass them needed.
Use
Inject the Railroad\RemoteStorage\Services\RemoteStorageService class where needed
/** @var Railroad\RemoteStorage\Services\RemoteStorageService $remoteStorageService */
protected $remoteStorageService;
public function __constructor(Railroad\RemoteStorage\Services\RemoteStorageService $remoteStorageService){
$this->remoteStorageService = $remoteStorageService;
}
Include namespace at top of file:
use Railroad\RemoteStorage\Services;
... to save yourself having to specify the namespace everywhere:
/** @var RemoteStorageService $remoteStorageService */
protected $remoteStorageService;
public function __constructor(RemoteStorageService $remoteStorageService){
$this->remoteStorageService = $remoteStorageService;
}
- put
- read
- exists
- delete
- create_dir
- rename
- copy
- get_mimetype
- get_timestamp
- get_size
- delete_dir -->
RemoteStorageService
All methods below are public.
put
Usage Example(s)
$upload = $this->remoteStorageService->put($filenameRelative, $filenameAbsolute);
/** Upload product thumbnail on remote storage using remotestorage package.
* Throw an error JSON response if the upload failed or return the uploaded thumbnail url.
*
* @param Request $request
* @return JsonResponse
*/
public function uploadThumbnail(Request $request)
{
$target = $request->get('target');
$upload = $this->remoteStorageService->put($target, $request->file('file'));
throw_if(
(!$upload),
new JsonResponse('Upload product thumbnail failed', 400)
);
return new JsonResponse(
$this->remoteStorageService->url($target), 201
);
}
Parameters
| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | name to save file as on remote |
| 2 | filenameAbsolute | yes | string | path to file to upload |
Responses
| outcome | return data type | return data value |
|---|---|---|
| succeeded | boolean | true |
| failed | boolean | false |
read
Usage Example(s)
$file = $this->remoteStorageService->read($filenameRelative);
Parameters
| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
Responses
| outcome | return data type | return data value (example) | notes about return data |
|---|---|---|---|
| failed | boolean | false | |
| succeeded | string | "b"""Ø à\x00\x10JFIF\x00\x01\x01\x01\x00\x00\x00\x00 ■\x00;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 70\n █\x00C\x00\n\x07\x07\x08\x07\x06\n\x08\x08\x08\v\n\n" |
Raw image data as string |
exists
Usage Example(s)
$exists = $this->remoteStorageService->exists('foo/bar.jpg');
/**
* @param Request $request
* @return JsonResponse
*/
public function uploadThumbnailIfDoesNotAlreadyExist(Request $request)
{
$target = 'foo/' . $request->get('target');
if(!$this->remoteStorageService->exists('foo/')){
$upload = $this->remoteStorageService->put($target, $request->file('file'));
throw_if((!$upload), new JsonResponse('Upload product thumbnail failed', 400));
}
return new JsonResponse(['exists' => true]);
}
Parameters
| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
Responses
| outcome | return data type | return data value |
|---|---|---|
| exists | boolean | true |
| does not exist | boolean | false |
delete
Usage Example(s)
$this->remoteStorageService->delete('foo/bar.jpg');
public function deleteThumbnail(Request $request)
{
$target = $request->get('target');
$delete = $this->remoteStorageService->delete('foo/' . $target);
throw_if((!$delete), new JsonResponse('product thumbnail deletion failed', 400));
return new JsonResponse(['deleted' => true]);
}
Parameters
| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
Responses
| outcome | return data type | return data value |
|---|---|---|
| exists | boolean | true |
| does not exist | boolean | false |
create_dir
[TODO]
rename
[TODO]
copy
[TODO]
get_mimetype
[TODO]
get_timestamp
[TODO]
get_size
[TODO]
delete_dir
[TODO]
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 |
|---|---|---|---|---|
| v3.0.0 | ^8.2 | ^11.9 | ||
| v2.0.1 | ^8.1 | ^9.0 | ||
| v2.0.0 | ^8.1 | ^9.0 | ||
| v1.0.01 | ~7 | 5.6.* | ||
| v1.0.0 | ~7 | 5.6.* | ||
| v0.0.1 | ~7 | 5.6.* |