2016-03-27 79 views
0

我寫了這個函數來處理將圖像上傳到Amazon S3使用s3fs節點模塊使用S3FS節點模塊將圖像上傳到amazon s3如何從s3檢索圖像url?

var fs = require('fs'); 
var multiParty = require('connect-multiparty'), 
    multiPartyMiddleware = multiParty(); 

var S3FS = require('s3fs') 
var s3fsImp1 = new S3FS(process.env.BUCKET_NAME, { 
    accessKeyId: process.env.AWS_ACCESS_KEY, 
    secretAccessKey: process.env.AWS_SECRET_KEY 
}); 

module.exports = function(app, express) { 
    app.use(multiPartyMiddleware) 

    app.post('/upload', (req, res) => { 
    var files = req.files 
    var fileCount = Object.keys(req.files).length 
    var fileUploadCount = 0 
    for (var file in files) { 
     (function(file) { 
     var stream = fs.createReadStream(file.path); 
     s3fsImp1.writeFile(file.name, stream).then(function() { 
      fileUploadCount++; 
      fs.unlink(file.path, function(err) { 
      if (err) { 
       console.error(err); 
       res.send(400) 
      } 
      }); 
      if (fileUploadCount === fileCount) { 
      res.send('successful uploading').status(200); 
      } 
     }); 
     })(files[file]) 
    } 
    }) 
} 

,它的工作罰款上傳圖片到Amazon S3的基本應用。但我還沒有想出如何返回圖像的URL,所以我可以 1.在db中存儲對圖像url的引用 2.在客戶端上使用/顯示圖像

如何修改此功能在將它們發送到s3後檢索圖像url?

回答

0

據我所知,該庫不具備該功能。但它有一個可以幫助的函數調用getPath。

var s3fsImp1 = new S3FS(process.env.BUCKET_NAME, options); 
var fsImplStyles = s3fsImp1.getPath(file.name); 

// Change eu-west-1 for your region 
var url = 'https://s3-eu-west-1.amazonaws.com/' + fsImplStyles; 

希望幫助