@pubsweet/component-aws-s3
v1.2.54
Published
AWS S3 upload component for PubSweet
Downloads
82
Keywords
Readme
AWS S3 File Upload Configuration
In order to use this component, the following configuration needs to be added to a PubSweet application inside a section named pubsweet-component-aws-s3
:
secretAccessKey
: theAWS_S3_SECRET_KEY
value from the app's.env
fileaccessKeyId
: theAWS_S3_ACCESS_KEY
value from the app's.env
fileregion
: theAWS_S3_REGION
value from the app's.env
filebucket
: theAWS_S3_BUCKET
value from the app's.env
file
For example:
"pubsweet-component-aws-s3": {
"secretAccessKey": "process.env.AWS_S3_SECRET_KEY",
"accessKeyId": "process.env.AWS_S3_ACCESS_KEY",
"region": "process.env.AWS_S3_REGION",
"bucket": "process.env.AWS_S3_BUCKET",
"validations": "path.resolve(__dirname, 'upload-validations.js')",
},
The .env
file should look like this:
AWS_S3_ACCESS_KEY = exampleKey
AWS_S3_SECRET_KEY = exampleKey/sads/21
AWS_S3_REGION = region-name
AWS_S3_BUCKET = bucket-name
Then, as soon as possible in your app you should add the dotenv
package:
require('dotenv').config()
component-aws-s3
API
A list of endpoints that help you upload, download and delete S3 files.
Upload a file [POST]
Request
POST /api/file
Request body
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWfPNVh4wuWBlyEyQ
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fileType"
supplementary
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="fragmentId"
545
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Content-Disposition: form-data; name="file"; filename="attachment.txt"
Content-Type: text/plain
[file content goes there]
------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
Response
{
"id": "fragment-id/file-id",
"name": "Document Name.doc",
"size": 452097
}
Retrieve file signed URL [GET]
This endpoint allows you to retrieve a file's signed URL that can be used to download the file.
Request
GET /api/files/{fragmentId}/{fileId}
| URI Parameter | Requiered | Requirements | Description | | ------------- | --------- | ------------ | ---------------------- | | fragmentId | Yes | String | The ID of the fragment | | fileId | Yes | String | The ID of the file |
| Query Parameter | Requiered | Requirements | Description | | --------------- | --------- | ------------ | -------------------------------------- | | download | No | Boolean | Get the file data blob if set to true. |
Response
HTTP/1.1 200
{
"signedUrl": "aws-url"
}
Retrieve files as zip [GET]
This endpoint allows you to retrieve a fragment's files as a zip archive.
Request
GET /api/files/{fragmentId}
| URI Parameter | Requiered | Requirements | Description | | ------------- | --------- | ------------ | ---------------------- | | fragmentId | Yes | String | The ID of the fragment |
| Query Parameter | Requiered | Requirements | Description | | --------------- | --------- | ------------- | ---------------------------------------------------------------------------------------------- | | fileTypes | No | Array(String) | Specify which file types to be included in the zip. All file types will be included if omitted |
Response
HTTP/1.1 200
{
"dataBlob"
}
Delete file [DELETE]
Request
DELETE /api/file/{fileId}
| URI Parameter | Requiered | Requirements | Description | | ------------- | --------- | ------------ | ------------------ | | fileId | Yes | String | The ID of the file |
Response
HTTP/1.1 204