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]