2017-07-26 6 views
0
/********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!'); 
}); 

Ci-dessous mon fichier index.html ....Comment utiliser le module npm de multer-imageur dans nodejs et télécharger mon image redimensionnée au seau amazon s3?

/***************index.html*********************/ 
    <!DOCTYPE html> 
    <html> 
    <head lang="en"> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
    <body> 
    Hey! Lets try uploading to 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> 
    /**********************************************/ 

Lorsque j'ai essayé de télécharger et de redimensionner mon image en utilisant le code ci-dessus je reçois la error.But suivante quand j'ai essayé de télécharger mon fichier directement en ne redimensionnant pas il a réussi à l'aide du module npm multer-s3 mais je ne pouvais pas redimensionner ou réduire la taille de mes vignettes. en utilisant le module s3 multer.i besoin de réduire la taille de ma miniature ce qui peut être fait?

erreur:

UnknownEndpoint: Inaccessible host: `s3.asia'. This service may not be available in the `Asia Pacific (Mumbai)' region. 
    at Request.ENOTFOUND_ERROR (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/event_listeners.js:393:46) 
    at Request.callListeners (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:105:20) 
    at Request.emit (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/sequential_executor.js:77:10) 
    at Request.emit (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/request.js:668:14) 
    at ClientRequest.error (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/event_listeners.js:232:22) 
    at ClientRequest.<anonymous> (/path/to/folder//node_modules/s3fs/node_modules/aws-sdk/lib/http/node.js:62:19) 
    at emitOne (events.js:115:13) 
    at ClientRequest.emit (events.js:210:7) 
    at TLSSocket.socketErrorListener (_http_client.js:399:9) 
    at emitOne (events.js:115:13) 
    at TLSSocket.emit (events.js:210:7) 
    at emitErrorNT (internal/streams/destroy.js:62:8) 
    at _combinedTickCallback (internal/process/next_tick.js:102:11) 
    at process._tickDomainCallback (internal/process/next_tick.js:198:9) 

Comment résoudre ce problème? Y a-t-il un moyen de faire profiter ma région de cette fonction?

Répondre

1

Avez-vous essayé d'ajouter la région dans un autre format? Mes S3 configs ressemblent à ceci:

S3_REGION = eu centrale-1
S3_DOMAIN = https://s3.eu-central-1.amazonaws.com/

(J'utilise le module aws-sdk)

+0

région: « Asie-Pacifique (Mumbai) ' C'est ma région comment le donner dans ce format? – Jagadeesh

+1

http://docs.aws.amazon.com/general/latest/gr/rande.html -> ressemble à: ap-south-1 – MRonline

+0

J'ai remplacé la région comme dit par vous mais maintenant un fichier vide avec zéro octets téléchargé sur le téléchargement d'une image .. – Jagadeesh