2017-08-24 10 views
2

次のようにします: バケット(Google Cloud Storage)から画像ファイルを読み込むGoogle Cloud機能(httpがトリガー)を作成し、それを応答として送信します。Google Cloudストレージから画像を読み込んでGoogle Cloud関数を使用して送信します。

私はいくつかの組み合わせを試してみたと私はそれがそのような何かでなければならないことだと思う:

'use strict'; 
const gcs = require('@google-cloud/storage')(); 

exports.sendImage = function sendImage(req, res) { 
    let bucket = gcs.bucket('my-bucket-name'); 
    let myImage = bucket.file('my-image-file.jpg'); 


    res.contentType('image/jpeg'); 
    res.end(myImage, 'binary'); 
}; 

私は(ブラウザ上で)URLを使用して、それをトリガー時には、上記の機能が正常に展開したが、それは何の結果を示していません。

私はできるだけシンプルにしています。なぜなら、1つのイメージで動作すると、コードを改善してイメージを呼び出すことができるからです。 Googleクラウド機能の https://medium.com/google-cloud/uploading-resizing-and-serving-images-with-google-cloud-platform-ca9631a2c556

しかし、実行している:

私の最終目標は、この記事で示したものと同様のものを持っていることです。私が単純なイメージを送ることができたら、node-image-resizeのようないくつかのモジュールを最終結果に使うことができます。

答えて

2

私は自分でそれを見つけることができました。私はそれが他の多くの人々を助けることができると思います。だから、次の操作を行います。

1 - 、Googleクラウド機能を作成者がIMAGESERVERという名前を付けてみましょう - Googleクラウドストレージ上のバケットを作成し、の名前は[私のバケット]

2であるとしましょう。

3 - package.jsonファイルを編集することを忘れないでください。次のように私の1だった:

{ 
    "name": "image-server", 
    "version": "0.0.1", 
    "dependencies": { 
    "@google-cloud/storage": "^1.2.1" 
    } 
} 

4 - (私はそれを考え出した後に)簡単な画像を送信するためのコードは本当に簡単です:

'use strict'; 

const gcs = require('@google-cloud/storage')(); 

exports.imageServer = function imageSender(req, res) { 
    let file = gcs.bucket('my-bucket').file('test-1.jpg'); 
    let readStream = file.createReadStream(); 

    res.setHeader("content-type", "image/jpeg"); 
    readStream.pipe(res); 

}; 

OBS:テストイメージという名前のファイルです[ test-1.jpg]、それはバケットのルートにあります。そこで、ここからブラウザに送信することができました。私の質問で言いましたように、今は主な目標を達成するためにコードを変更するだけの問題です。

私はそれが役に立ちそうです。

参考リンク: Google Cloud Storage NPM Google cloud Functions Hello World tutorial

関連する問題