├── .gitignore ├── package.json ├── README.md ├── cors.js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-example", 3 | "version": "1.0.0", 4 | "description": "An example project demonstrating how to use Filebase with NodeJS", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Filebase ", 10 | "license": "ISC", 11 | "dependencies": { 12 | "aws-sdk": "^2.580.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nodejs-example 2 | An example project showing how to use the Filebase S3 API with NodeJS. 3 | 4 | ## Quick Start 5 | Use the following commands to get started: 6 | ```bash 7 | $ git clone https://github.com/filebase/nodejs-example && cd nodejs-example 8 | $ npm ci 9 | $ AWS_ACCESS_KEY_ID=key AWS_SECRET_ACCESS_KEY=secret node app.js 10 | ``` 11 | To change CORS settings on a bucket, use this command: 12 | ``` 13 | AWS_ACCESS_KEY_ID=key AWS_SECRET_ACCESS_KEY=secret node cors.js 14 | ``` 15 | -------------------------------------------------------------------------------- /cors.js: -------------------------------------------------------------------------------- 1 | const AWS = require('aws-sdk'); 2 | const s3 = new AWS.S3({endpoint: 'https://s3.filebase.com', signatureVersion: 'v4'}); 3 | 4 | s3.listBuckets(function(err, data) { 5 | if (err) { 6 | console.log(err, err.stack); 7 | } else { 8 | var params = { 9 | Bucket: data['Buckets'][0]['Name'], // I suggest you edit this to a string 10 | CORSConfiguration: 11 | { 12 | CORSRules: 13 | [ 14 | { 15 | AllowedHeaders: ["*"], 16 | AllowedMethods: ["PUT", "POST"], 17 | AllowedOrigins: ["*"] 18 | }, 19 | { 20 | AllowedMethods: ["GET"], 21 | AllowedOrigins: ["*"] 22 | } 23 | ] 24 | } 25 | }; 26 | s3.putBucketCors(params, function(err, data) { 27 | if (err) { 28 | console.log(err, err.stack); 29 | } else { 30 | console.log("Success! Edited CORS on:", params.Bucket); 31 | } 32 | }); 33 | } 34 | }); 35 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | var AWS = require('aws-sdk'); 2 | var s3 = new AWS.S3({endpoint: 'https://s3.filebase.com', signatureVersion: 'v4'}); 3 | 4 | //retrieve list of buckets 5 | s3.listBuckets(async function(err, data) { 6 | if (err) { 7 | console.log(err, err.stack); 8 | } else { 9 | 10 | //define parameters 11 | var params = { 12 | Body: 'Hello, world! :)', 13 | Bucket: data['Buckets'][0]['Name'], 14 | Key: 'exampleobject', 15 | ContentType: 'text/plain', 16 | Metadata: { 17 | 'metadata1': 'value1', 18 | 'metadata2': 'value2' 19 | } 20 | }; 21 | 22 | //upload 23 | s3.putObject(params, function(err, data) { 24 | if (err) { 25 | console.log(err, err.stack); 26 | } else { 27 | console.log(data); 28 | } 29 | }); 30 | 31 | //waiting for the file to be uploaded, and it usually takes less than 5 seconds 32 | const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); 33 | await delay(5000); 34 | 35 | //redefine parameters 36 | var params = { 37 | Key: 'exampleobject', 38 | Bucket: data['Buckets'][0]['Name'] 39 | } 40 | 41 | //download 42 | s3.getObject(params, function(err, data) { 43 | if (err) { 44 | console.log(err, err.stack); 45 | } else { 46 | console.log('File content: ' + Buffer.from(data.Body, 'utf8').toString()); 47 | } 48 | }); 49 | } 50 | }); 51 | --------------------------------------------------------------------------------