2016-09-27 2 views
0

Я создаю скрипт, который будет делать запрос 2 раза в секунду локальному серверу сети камер и после получения положительного ответа, что камера обнаружила кого-то, кого я хочу зарегистрировать три изображений.Записывать изображения после успешного HTTP-запроса с помощью Node.js

В файле JSON конфигурации У меня есть triggerURL сервера, то интервал порт, DATADIR, где регистрируются изображения должны быть сохранены и трек массив, который содержит URL-адрес этих изображений и fileName они должны получить.

Это код сценария я использую после чтения файла в формате 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. Есть ли лучший способ сделать этот процесс?

ответ

0
  1. без запуска кода или более глубокий осмотр; не должен "data = JSON.parse (response)" скорее быть "data = JSON.parse (content)"? Кроме того, если данные не определены или не содержат «дорожки», «if (data.track.length> 0)» выдает ошибку. Это можно исправить с помощью «if (data & & data.track & & data.track.length> 0)".
  2. Я не могу придумать очень лучший способ. Я бы разложил его больше на функции, чтобы сделать код более понятным.
Смежные вопросы