2017-07-26 10 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!'); 
}); 

私は上記のコードを使用して、私の画像をアップロードして、サイズを変更しようとしたとき、私は私をアップロードしようとしたとき、私は、次のerror.Butを取得していますnodejsでmulter-imager npmモジュールを使用してamazon s3 bucketにイメージをアップロードする方法?以下は

/***************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> 
    /**********************************************/ 

....私のindex.htmlファイルでありますファイルを直接サイズ変更しないでnpm multer-s3モジュールの助けを借りて成功しましたが、サムネイルのサイズを変更したり縮小したりできませんでした。 multer s3 module.iを使用してサムネイルサイズを縮小する必要がありますか?

エラー:

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) 

この問題を解決するにはどのように?私の地域がこの機能を利用できるようにする方法はありますか?

答えて

1

リージョンを別のフォーマットで追加しようとしましたか? マイS3のコンフィグは、次のようになります。

S3_REGION = EU-中央-1
S3_DOMAIN = https://s3.eu-central-1.amazonaws.com/

(私はAWS-SDKモジュールを使用しています)

+0

地域:「アジア太平洋地域(ムンバイ) ' これは私の地域でどのようにその形式で与えるのですか? – Jagadeesh

+1

http://docs.aws.amazon.com/general/latest/gr/rande.html - >ように見える:ap-south-1 – MRonline

+0

私はあなたが言ったように領域を置き換えましたが、ゼロバイト画像をアップロードするとアップロードされます.. – Jagadeesh

関連する問題