2016-12-04 7 views
0

이미지를 나타내는 base64 인코딩 된 문자열을 사용하는 Express 앱을 작성 중입니다. 현재 문자열을 가져 와서 AWS S3에 이미지를 업로드 할 수 있는지 잘 모르겠습니다. 인코딩 된 이미지 문자열 데이터를 읽고 디코딩하고 fs을 사용하여 파일을 작성한 다음 업로드하려고합니다. 이 작업은 원시 파일을 가져 오는 엔드 포인트에서 작동하며 모든 컨텐츠는 AWS s3에 올바르게 업로드됩니다.노드를 사용하여 S3에 이미지를 업로드하는 방법

이제 위에서 설명한 작업을 수행 할 때 S3에 업로드 할 수 있지만 파일이 0KB이고 비어 있습니다. 이유는 확실하지 않습니다. 필자는 stringData를 사용하고 테스트 파일에 파일을 작성하는 것으로 테스트했으며 작동합니다. 그러나 s3에 업로드하려고하면 파일이 표시되지만 비어 있습니다. 여기

router.post('/images/tags/nutritionalInformation/image/base64encoded', function (req, res) { 
    console.log(req.body.imageString); 
    var base64Stream = req.body.imageString; 
    var imgDecodedBuffer = decodeBase64Image(base64Stream); 
    console.log(imgDecodedBuffer); 
    // write to image file 
    var prefix = guid().toString() + ".jpg"; 
    var filePath = './uploads/' + prefix; 
    console.log(filePath); 


    fs.writeFile(filePath, imgDecodedBuffer.data, function(err) { 
     console.log(err); 
    }); 

    var stream = fs.createReadStream(filePath); 


    console.log(stream); 

    return s3fsImpl.writeFile(prefix, stream).then(function() { 
     fs.unlink(filePath, function (err) { 
      if (err) { 
       console.error(err); 
      } 
     }); 
    }); 
}) 

는 관련 import 문은 다음과 같습니다 : 어떤 도움을 크게 감상 할 수

var fs = require('fs'); 
var s3fs = require('s3fs'); 
var multiparty = require('connect-multiparty'), 
    multipartyMidleware = multiparty(); 

var s3fsImpl = new s3fs('blahblah', { 
    accessKeyId: 'ACCESS_KEY_ID', 
    secretAccessKey: 'SECRET' 
}); 

여기 내 코드입니다!

답변

1

그냥 imgDecodedBuffer.data 값으로 추정되는 버퍼를 전달하면 작동합니다.

관련 문제