2017-08-24 61 views
2

發送它,我想做到以下幾點: 創建一個谷歌雲功能(HTTP觸發),簡單地讀一斗(谷歌雲存儲)的圖像文件,發送它作爲迴應。讀取圖像,並使用谷歌雲功能

我已經嘗試了一些組合,我認爲它應該是這樣的:

'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(在瀏覽器),也沒有任何結果。

我這樣做很簡單,因爲如果它與一個圖像一起工作,我可以改進代碼來調用任何圖像。

我的最終目標是有類似的東西表現出對這個職位:在谷歌雲功能 https://medium.com/google-cloud/uploading-resizing-and-serving-images-with-google-cloud-platform-ca9631a2c556

但是運行。如果我設法發送一個簡單的圖像,我可以使用一些模塊,如node-image-resize到最後的結果。

回答

2

我可以自己找到它,我認爲它可以幫助很多其他人。所以,做到以下幾點:

1 - 建立在谷歌雲存儲桶,假設名稱爲[我鬥]

2 - 創建一個谷歌的雲功能,讓我們將其命名爲imageServer。

3 - 不要忘了編輯的package.json文件。我的一個如下:

{ 
    "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); 

}; 

觀測數據:測試圖像文件名爲[ test-1.jpg]它在桶的根部。所以,從這裏開始,我可以將它發送到瀏覽器。現在,它只是一個改變的代碼來實現我的首要目標,因爲我告訴我的問題的問題。

我希望它有幫助。

參考鏈接: Google Cloud Storage NPM Google cloud Functions Hello World tutorial