Я хочу загружать копию большого файла изображения (+20 МБ) всякий раз, когда он изменяется. Но без загрузки его каждые X секунд и сравнения со старой версией, которая у меня есть, как я узнаю, изменилось изображение или нет? В противном случае это будет очень потреблять полосу пропускания и медленно.
Есть ли способ определить размер картинки до полной загрузки? Так что, если размер изменился, значит, изменилось и изображение.
Можно ли сравнить два изображения, не скачивая их (или просто скачав первые несколько килобайт)? Другими словами, содержат ли изображения информацию о размере или хэш-значение? Или что-то в этом роде.
решение1
Wget позволяет загружать только те файлы на стороне сервера, которые новее:
When running Wget with -N, with or without -r or -p, the decision
as to whether or not to download a newer copy of a file depends on
the local and remote timestamp and size of the file. -nc may not
be specified at the same time as -N.
решение2
Подход 1:Файловый сервер может разрешить доступ к каталогу. Попробуйте получить доступ и проанализировать вывод родительского каталога. Пример:https://www.kernel.org/pub/site/
Подход 2:В коде извлеките поле заголовка «content-length», чтобы получить размер файла, которыйможетбыть индикатором того, что файл был изменен. Пример:https://stackoverflow.com/questions/2983073/how-to-know-the-size-of-a-file-before-downloading-it/12271781#12271781
Подход 3:Попросите администратора сервера предоставить вам контрольную сумму, которую вы сможете загрузить, уведомление о доступности нового файла или какую-либо другую форму доступа к оболочке/каталогу.