2016-07-21 3 views
0

이 코드로, S3 내 노드 JS 웹에서 이미지를 업로드 있습니다S3의 내 이미지가 표시되지 않습니다. 뭐가 문제 야?

router.post('/uploadtest', multipartMiddleware, function(req, res, next) { 

    var file = req.files.file; 

    var data = {Key: file.originalFilename, Body: file.path, ContentType: file.type, ACL: 'public-read'}; 

    s3Bucket.putObject(data, function(err, data) { 
     if (err) 
     { console.log('Failed!'); 
      res.redirect("/lookpic?url=null"); 
     } else { 
      console.log('Success!'); 
      var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename 
      res.redirect("/lookpic?url="+urls); 
     } 
    }); 
}); 

그리고 그것은 내 이미지 내 S3 버킷에 저장, 작업,하지만 내 이미지를 볼 수있는 링크를 클릭하면,이 그 결과 : http://i.stack.imgur.com/qAM5N.png

내 단계에는 어떤 문제가 있습니까?

답변

0

body 속성에 파일 경로를 지정하는 반면 파일 데이터는 body 속성에 제공해야합니다. 이것을 시도하십시오 :

var fs = require('fs'); 
router.post('/uploadtest', multipartMiddleware, function(req, res, next) { 

    var file = req.files.file; 
    var file_data = fs.readFileSynch(file.path); 
    var data = {Key: file.originalFilename, Body: file_data, ContentType: file.type, ACL: 'public-read'}; 

    s3Bucket.putObject(data, function(err, data) { 
     if (err) 
      { console.log('Failed!'); 
      res.redirect("/lookpic?url=null"); 
     } else { 
      console.log('Success!'); 

      // remove the uploaded file if you want to 
      fs.unlink(file.path, function(err) { 
       if (err) throw err; 
      }); 
     // 

      var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename 
      res.redirect("/lookpic?url="+urls); 
     } 
    }); 
}); 

업로드 할 파일을 동기식으로 읽으려면 fs 모듈을 사용하십시오. 이 링크 확인 : https://nodejs.org/api/fs.html

관련 문제