2017-02-07 6 views
0

FormDataオブジェクト内にラップされたイメージをノードサーバーに送信する角度2のアプリケーションがあります。ノードサーバーへのFormDataのイメージ

私は、サーバー上の画像を受信して​​、ファイルに書き込み、それを再ダウンロードすることができます:私が何をしようとしています何

var busboy = new Busboy({ headers: req.headers }); 
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { 


    if(mimetype == "image/png"){ 
     var saveTo = path.join('/home/ec2-user/bonappetite/tmp', path.basename(filename) + ".png"); 
    } else if(mimetype == "image/jpeg") { 
     var saveTo = path.join('/home/ec2-user/bonappetite/tmp', path.basename(filename) + ".jpg"); 
    } else { 
     var saveTo = path.join('/home/ec2-user/bonappetite/tmp', path.basename(filename)); 
     } 
     file.pipe(fs.createWriteStream(saveTo)); 

}); 

busboy.on('finish', function() { 
    console.log("url retrieved"); 
    res.writeHead(200, { 'Connection': 'close' }); 
    res.end(savedUrl); 
}); 
return req.pipe(busboy); 

はいるFormData内の画像を取得し、私のS3バケットにアップロードしています。私は、データを自分でアップロードすることが、私は、私はちょうど私のサーバにアップロードし、S3にそれをストリーミングしているファイルを取ることができますどのように私はポスト要求

var AWS = require('aws-sdk'); 
AWS.config.loadFromPath('./aws_config.json'); 
var s3Bucket = new AWS.S3({ params: {Bucket: 'xxxx'} }); 



params = {Key: filename, Body: file}; 
s3Bucket.putObject(params, function(err, data) { 

if (err) { 

    console.log(err) 

} else { 
    var urlParams = {Bucket: 'xxxx', Key: filename}; 
    s3Bucket.getSignedUrl('getObject', urlParams, function(err, url){ 
      if(err){ 
       console.log(err); 
       res.status(err.status || 500); 
       res.send(error); 
      }else { 
       res.setHeader('Content-Type', 'application/json'); 
       url = url; 
       res.send({"url":url}); 
      } 
    }) 

} 
}); 

から保存した画像をアップロードするように見えるカント?

s3に送信する前にファイルをディスクに保存する必要がありますか?

ありがとうございました

答えて

0

ファイルを保存せずにこの問題を解決しました。

putObjectを使用するのではなく、uploadを使用してください。

var AWS = require('aws-sdk'); 
AWS.config.loadFromPath('./aws_config.json'); 
var s3Bucket = new AWS.S3({ params: {Bucket: 'xxxx'} }); 



params = {Key: filename, Body: file}; 
s3Bucket.upload(params, function(err, data) { 

if (err) { 

    console.log(err) 

} else { 
    var urlParams = {Bucket: 'xxxx', Key: filename}; 
    s3Bucket.getSignedUrl('getObject', urlParams, function(err, url){ 
      if(err){ 
       console.log(err); 
       res.status(err.status || 500); 
       res.send(error); 
      }else { 
       res.setHeader('Content-Type', 'application/json'); 
       url = url; 
       res.send({"url":url}); 
      } 
    }) 

} 
}); 
関連する問題