2016-10-31 2 views
0

Google CDN에서 이미지 요청을 시도하고 S3에 업로드하려고합니다. https://github.com/request/request 라이브러리 및 Node/Express 사용Node의 googleusercontent CDN에서 이미지 파일을 처리하는 방법은 무엇입니까?

Google CDN에서 돌아 오는 페이로드 처리 방법이 다소 혼란 스럽습니다. enter image description here

이미지가 본문 필드로 돌아와 인코딩됩니다. 인코딩 방법을 잘 모릅니다.

는 구글 CDN에 URL을 감안할 때 :)

�PNG↵↵IHDRv&vл� IDATx�}���<z�f���];��o]��A�N�.po�/�/R���..............

1 :

const fileURL = https://lh4.googleusercontent.com/EWE1234rFL006WfQKuAVrsYMOiKnM6iztPtLgXM5U…3i26LoPHQwPTQME7ne3XoMriKVjUo3hrhwWw1211223

request(fileURL, (err, res, body) => { 

    //NOT sure how to handle the response here?? 
    //Trying base64 
    fs.writeFileSync(`.tmp/file1.png`, body, {encoding: 'base64'}); 

    //Trying Binary 
    fs.writeFileSync(`.tmp/file.png`, body, {encoding: 'binary'}); 
    } 

몸으로 돌아옵니다. googleusercontent Google CDN (이미지는 원래 Google 문서 도구에 붙여 넣었 음)

2)에서 이미지를 요청하십시오. 이미지 파일을 작성하고 서버의 디스크에 씁니다.

fs.writeFileSync 중 어느 것도 읽을 수있는 이미지 파일을 생성하지 않습니다.

이 문제를 해결하는 방법에 대한 조언은 정말 최고 일 것입니다.

+0

무엇을 S3에 업로드 하시겠습니까? 시체를 그대로 전달할 수 있습니다. –

+0

죄송합니다. 문제는 필기중인 이미지를 읽을 수 없다는 점입니다. 내 글을 편집하려고합니다. Google에서 반환 된 문자열을 처리하고 파일을 만드는 방법을 이해하려고 시도합니다. –

답변

0

S3 업로드에 응답을 전달하십시오.

var request = require('request'), 
    fs = require('fs'), 
    aws = require('aws-sdk'), 
    s3 = new aws.S3(), 
    url = 'https://lh4.googleusercontent.com/-2XOcvsAH-kc/VHvmCm1aOoI/AAAAAAABtzg/SDdN1Vg5FFs/s346/14%2B-%2B1'; 

# Store in a file 
request(url).pipe(fs.createWriteStream('file.gif')); 

request(url, {encoding: 'binary'}, function(error, response, body) { 
    # Another way to store in a file 
    fs.writeFile('file.gif', body, 'binary', function(err) {}); 

    # Upload to S3 
    s3.upload({ 
     Body: body, 
     Bucket: 'BucketName', 
     Key: 'file.gif', 
    }, function(err, data) {}); 
}); 
+0

네, 기본적으로 제가하고있는 일입니다. 디스크에 쓰여진 파일을 읽을 수 없습니다. –

+0

요청에 대한 인코딩 부분이'request (url, {encoding : 'binary'} ' –

+0

Excellent. –

관련 문제