2016-10-31 4 views
0

Google CDNから画像をリクエストしてS3にアップロードしようとしています。 https://github.com/request/requestライブラリーとNode/Expressを使用してください; ;Nodeのgoogleusercontent CDNから画像ファイルを処理する方法は?

Google CDNから戻ってくるペイロードを処理する方法が少し混乱しています。 enter image description here

画像はボディーフィールドに戻ってエンコードされます。どのようにコード化されているか分からない。

Googleの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 Docに貼り付けられていました)

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

が優秀であることに注意してください。 –

関連する問題