node.js - How to use multer-imager npm module in nodejs and upload my image resized to amazon s3 bucket? -
/********app.js***********/ var express = require('express'), aws = require('aws-sdk'), bodyparser = require('body-parser'), multer = require('multer'), imager = require('multer-imager'), multers3 = require('multer-s3'); var app = express(), app.use(bodyparser.json()); var upload = multer({ storage: imager({ dirname: 'avatar', bucket: 'my bucket', accesskeyid: 'myaccesskey', secretaccesskey: 'secretaccesskey', region: 'asia pacific (mumbai)', signatureversion: 'v4', filename: function (req, file, cb) { cb(null, date.now()) }, gm: { width: 200, height: 200, options: '!', format: 'png' }, s3 : { metadata: { 'acl': 'public-read' } } }) }); app.post('/upload', upload.array('upl', 1), function(req, res, next){ console.log(req.files); // print upload details res.send('successfully uploaded!'); }); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); app.listen(3001, function () { console.log('example app listening on port 3001!'); }); below index.html file....
/***************index.html*********************/ <!doctype html> <html> <head lang="en"> <meta charset="utf-8"> <title></title> </head> <body> hey! lets try uploading s3 directly :) <form method="post" enctype="multipart/form-data" action="/upload"> <p> <input type="text" name="title" placeholder="optional title"/> </p> <p> <input type="file" name="upl"/> <!-- <input type="file" name="uplo"/> --> </p> <p> <input type="submit"/> </p> </form> </body> </html> /**********************************************/ when tried upload , resize image using above code getting following error.but when tried upload file directly not resizing went successful of npm multer-s3 module couldnt resizing or reduce size of thumbnails. using multer s3 module.i need reduce thumbnail size can done?
error:
unknownendpoint: inaccessible host: `s3.asia'. service may not available in `asia pacific (mumbai)' region. @ request.enotfound_error (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/event_listeners.js:393:46) @ request.calllisteners (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:105:20) @ request.emit (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:77:10) @ request.emit (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/request.js:668:14) @ clientrequest.error (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/event_listeners.js:232:22) @ clientrequest.<anonymous> (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/http/node.js:62:19) @ emitone (events.js:115:13) @ clientrequest.emit (events.js:210:7) @ tlssocket.socketerrorlistener (_http_client.js:399:9) @ emitone (events.js:115:13) @ tlssocket.emit (events.js:210:7) @ emiterrornt (internal/streams/destroy.js:62:8) @ _combinedtickcallback (internal/process/next_tick.js:102:11) @ process._tickdomaincallback (internal/process/next_tick.js:198:9) how fix this? there way make region avail function?
have tried adding region in format? s3 configs this:
s3_region=eu-central-1
s3_domain=https://s3.eu-central-1.amazonaws.com/
(i'm using aws-sdk module)
Comments
Post a Comment