2013-10-24 11 views
0

nodejs를 사용하여 이미지를 업로드하려고 시도하면 & 요청 모듈을 나타내지 만 Amazon S3 인스턴스에서 415 개를 계속 수신합니다.NodeJS 업로드 이미지 업로드

fs.createReadStream(req.files.image.path).pipe(request.post(defaults.url, { 
     form: { 
      param_1: '', 
      param_2: '' 
     } 
    }, function(error, response, body){ 
     if(error){ 
      callback(error, null); 
     }else{ 

      if(response.statusCode === 200){ 

       callback({}, body); 

      }else{ 

       callback(body, response); 
      } 


     } 
    })); 

이미지에 요청이 추가되지는 않지만 100 % 아니에요. 어떤 조언?

답변

2

pipe는 쓰기 가능한 스트림이 매개 변수로 필요합니다. 익스프레스의 res 객체를 파이프 대상으로 직접 사용할 수 있습니다. 당신이 S3에 업로드 할 경우에, 당신은 당신이 응답 직접

에 읽기 개체를 리디렉션 파이프를 사용하여 다운로드하려면 경우가

var fs = require ('fs') 
fs.readFile(req.files.image.path, function (err, data) { 

    var AWS = require('./aws_config') 
    var s3 = new AWS.S3() 
    var bucket = '' 
    s3.putObject({ 
     ACL: 'public-read', // by default private access 
     Bucket: bucket, 
     Key: file_name, 
     Body: data 
    }, function (err, data) { 
     if (err) { 
     console.log(err) 
     res.send(500, {msg: 'image upload failed', error: err}) 
     } else { 
     console.log('S3 upload Successful') 

     res.send({}) 
     } 
}); 

을 S3에 REQ 스트림에서 파일을 읽고 쓰는 putObject을 사용할 수 있습니다

app.get('/download/:file', function(req, res, next) { 
    var AWS = require('./aws_config') 
    var s3 = new AWS.S3() 
    s3.getObject({ 
    Bucket: '', 
    Key: req.params.file 
    }, function (err, data) { 
    if (err) console.log (err) 
    var fs = require ('fs') 
    var filePath = __dirname + "/downloads/" + req.params.file 
    fs.writeFile(filePath, data.Body, function (err) { 
     if (err) console.log(err) 
     else { 
     res.attachment(filePath) 
     var filestream = fs.createReadStream(filePath); 
     filestream.pipe(res); 
     // TODO: delete file from server ? 
     } 
    });  
    }) 
}) 
+0

감사합니다 Kamrul, 귀하의 코드는 작동하지만 aws apis를 사용하지 않으려 고합니다. 나는 폼 데이터 플러그인으로 작업 할 수 있었다. – DanyZift

+0

@ kamrul 같은 코드를 시도했지만 "TypeError : 정의되지 않은 속성 '파일'을 읽을 수 없습니다. restify.js 프레임 워크를 사용하고 있습니다. –

+0

@vivek, express로 처리되는 req 객체가'files'을 포함하고 있는지 확인해 주시겠습니까? 그렇지 않으면 특급 멀티 파트 설정을 확인하십시오. – Kamrul

관련 문제