簡體   English   中英

使用Node.js成功http請求后記錄圖像

[英]Log images after successful http request using Node.js

我正在創建一個腳本,該腳本將每秒向攝影機網絡的本地服務器發出2次請求,並且在收到肯定響應后,攝影機檢測到我要記錄三張圖像的請求。

在json配置文件中,我具有服務器的triggerURL間隔端口,應在其中保存記錄的圖像的dataDir和一個包含這些圖像的url和應接收的文件名track數組。

這是我在讀取JSON文件后使用的腳本代碼:

var configGet = {
    host: config.triggerURL
    , port: config.interval
    , method: 'GET'
};

setInterval(function () {
    var request = http.request(configGet, function (response) {
        var content = "";

        // Handle data chunks
        response.on('data', function (chunk) {
            content += chunk;
        });

        // Once we're done streaming the response, parse it as json.
        response.on('end', function () {
            var data = JSON.parse(response);

            if (data.track.length > 0) {
                //log images
                var download = function (uri, filename, callback) {
                    request.head(uri, function (err, res, body) {
                        request(uri)
                            .pipe(fs.createWriteStream(filename))
                            .on('close', callback);
                    });
                };
                for (var image in data.track) {
                    var path = config.dataDir + '/' + image.fileName
                    download(image.url, path.format(config.timestamp), function () {
                        console.log('done');
                    });
                }
            }
        });

        // Report errors
        request.on('error', function (error) {
            console.log("Error while calling endpoint.", error);
        });

        request.end();
    }, 500);
});

我有以下問題:

  1. 這種方法會在圖像的下載過程中產生某種錯誤,可以識別嗎?

  2. 有沒有更好的方法來執行此過程?

  1. 無需運行代碼或進行更深入的檢查; 應該不是“數據= JSON.parse(響應)”而是“數據= JSON.parse(內容)”? 另外,如果數據未定義或不包含“磁道”,則“ if(data.track.length> 0)”將引發錯誤。 可以使用“ if(data && data.track && data.track.length> 0)”修復此問題。
  2. 我想不出更好的方法。 我將在函數中對其進行更多分解,以使代碼更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM