Node JS Upload File to Amazon AWS s3

Uploading files to amazon AWS S3 using Node js + express; This tutorial will show you how to upload file to amazon s3 bucket using node js + express with express, aws-s3, multer package.

.medrectangle-3-multi-320{border:none!important;display:block!important;float:none!important;line-height:0;margin-bottom:15px!important;margin-left:auto!important;margin-right:auto!important;margin-top:15px!important;max-width:100%!important;min-height:250px;min-width:250px;padding:0;text-align:center!important;width:100%}

This uploading files to AWS S3 with Node.js tutorial will create file upload to amazon s3 bucket using node js + express + REST API.

Upload File to Amazon s3 bucket using Node JS + Express

Follow the below-given steps to upload single or multiple file to amazon s3 bucket using node js + express + rest api:

  • Step 1 – Create Node Express js App
  • Step 2 – Install express, aws-s3, Multer dependencies
  • Step 3 – Create Server.js File
    • Import Installed Packages
    • Configure AWS-S3 Package with Multer
    • Create Uploading Single File to AWS S3 with Node.js REST API Route
    • Create Uploading MultipleFile to AWS S3 with Node.js REST API Route
  • Step 4 – Start Node Express Js App Server
  • Step 5 – Uploading Files to AWS S3 Bucket with Node.js REST API

Step 1 – Create Node Express js App

Execute the following command on terminal to create node js app:

mkdir my-app
cd my-app
npm init -y

Step 2 – Install express, aws-s3, Multer dependencies

Execute the following command on terminal to install express, aws-s3 and multer dependencies:

npm install express multer aws-sdk body-parser --save

Express — Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.

body-parser — Express body-parser is an npm library used to process data sent through an HTTP request body. It exposes four express middlewares for parsing text, JSON, url-encoded and raw data set through an HTTP request body. 

AWS-SDK — AWS s3 npm is used to upload or delete an image from the s3 bucket with the help of some keys.

Step 3 – Create Server.js File

Create server.js file; so visit your app root directory and create a new file name server.js.

Then follow the below steps:

  • Import Installed Packages
  • Configure AWS-S3 Package with Multer
  • Create Uploading Single File to AWS S3 with Node.js REST API Route
  • Create Uploading Single File to AWS S3 with Node.js REST API Route

Import Installed Packages

Import above installed dependencies package in server.js file:

var aws = require('aws-sdk')
var express = require('express')
var multer = require('multer')
var multerS3 = require('multer-s3')

Configure AWS-S3 Package with Multer

Then configure aws-s3 package with multer as shown below:

var s3 = new aws.S3({
   accessKeyId: " ",
   secretAccessKey: " ",
   Bucket: " "
})
var upload = multer({
   storage: multerS3({
       s3: s3,
       bucket:””,
       metadata: function (req, file, cb) {
           cb(null, { fieldName: file.fieldname });
       },
       key: function (req, file, cb) {
           cb(null, Date.now().toString())
       }
   })
})

Create Uploading Single File to AWS S3 with Node.js REST API Route

The following node js rest api route will be upload single file to amazon s3 bucket:

//Uploading single File to aws s3 bucket
app.post('/upload', upload.single('photos'), function (req, res, next) {
   res.send({
       data: req.files,
       msg: 'Successfully uploaded ' + req.files + ' files!'
   })
})

Create Uploading Multiple File to AWS S3 with Node.js REST API Route

The following node js rest api route will be upload multiple file to amazon s3 bucket:

//Uploading single File to aws s3 bucket
app.post('/upload', upload.single('photos'), function (req, res, next) {
   res.send({
       data: req.files,
       msg: 'Successfully uploaded ' + req.files + ' files!'
   })
})

Open your server js file and add the following code into it:

var aws = require('aws-sdk')
var express = require('express')
var multer = require('multer')
var multerS3 = require('multer-s3')
var app = express()
var s3 = new aws.S3({
   accessKeyId: " ",
   secretAccessKey: " ",
   Bucket: " "
})
var upload = multer({
   storage: multerS3({
       s3: s3,
       bucket:””,
       metadata: function (req, file, cb) {
           cb(null, { fieldName: file.fieldname });
       },
       key: function (req, file, cb) {
           cb(null, Date.now().toString())
       }
   })
})

//Uploading single File to aws s3 bucket
app.post('/upload', upload.single('photos'), function (req, res, next) {
   res.send({
       data: req.files,
       msg: 'Successfully uploaded ' + req.files + ' files!'
   })
})

//Uploading Multiple Files to aws s3 bucket
app.post('/upload', upload.array('photos', 3), function (req, res, next) {
   res.send({
       data: req.files,
       msg: 'Successfully uploaded ' + req.files.length + ' files!'
   })
})

app.listen(4000, function () {
   console.log('express is online');
})

Step 4 – Start Node Express Js App Server

Execute the following command on terminal to start node express js server:

//run the below command

npm start

Step 5 – Uploading Files to AWS S3 Bucket with Node.js REST API

To upload single or multiple files to aws s3 bucket using node js rest API; So open postman for sending HTTP multipart/form-data requests: as shown below picture:

Conclusion

To upload files to AWS S3 using Node js + express + rest API; Through this tutorial, you will learn how to upload files to the amazon s3 bucket using node js + rest api+ express with the express, aws-s3, multer package.

Recommended Node JS Tutorials

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button