Показать доступное изображение в Node.js (при превышении лимита traffi c) - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть сервер хостинга изображений, на котором трафик c ограничен 600М каждый день.

И я также могу связать изображение с Google Drive. Когда я связываю изображение с Google Диском, оно работает медленно, но нет ограничения по траффику c.

Поэтому я хочу, чтобы сервер node.js возвратил URL доступного изображения.

Мой домен размещения изображений image.com, а домен node.js сервера - node.com.

Я вставлю изображение в HTML следующим образом.

<img src = "http://node.js/image">

и node.js код сервера, как показано ниже.

app.all('/image', function (req, res) {
  if(// should check whether 'http://image.com/' is available now' //)
    res.redirect('http://image.com/image.png');
  else      // The case that image.com is not available
    res.redirect('http://googledrive/imagesourceURL');
});

Итак, как я могу узнать, что image.com теперь доступен?

Если я проверю его, запросив файл реального изображения, он будет использовать traffi c сервера хостинга изображений, так что я думаю, что это не очень хорошая идея.

Что мне вставить в if (// следует проверить, доступен ли 'http://image.com/' сейчас '//) ?

У вас есть идеи по этому поводу?

1 Ответ

0 голосов
/ 07 февраля 2020

Чтобы проверить, доступен ли http ресурс, вы должны сделать запрос http ajax. В вашем случае вы должны перенаправить на этот URL, если статус 200, и на другой URL в противном случае. Это было бы что-то вроде:

$.ajax({
  type: "GET",
  url: 'http://image.com/image.png',
  success: function(data, textStatus, jqXHR){
    console.log(textStatus + ": " + jqXHR.status);
        res.redirect('http://image.com/image.png');

  },
  error: function(jqXHR, textStatus, errorThrown){
    console.log(textStatus + ": " + jqXHR.status + " " + errorThrown);
    res.redirect('http://googledrive/imagesourceURL');

  }
});
...