Wrapper for slightly easier use of league/flysystem with AWS S3 by our Laravel application.
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)
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.
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;
}| outcome | return data type | return data value |
|---|---|---|
| succeeded | boolean | true |
| failed | boolean | false |
$file = $this->remoteStorageService->read($filenameRelative);| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
| 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 = $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]);
}| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
| outcome | return data type | return data value |
|---|---|---|
| exists | boolean | true |
| does not exist | boolean | false |
$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]);
}| # | name | required | type | description |
|---|---|---|---|---|
| 1 | filenameRelative | yes | string | path to file name from bucket root |
| outcome | return data type | return data value |
|---|---|---|
| exists | boolean | true |
| does not exist | boolean | false |
[TODO]
[TODO]
[TODO]
[TODO]
[TODO]
[TODO]
[TODO]