|
Повторная скачка файла - проверка что уже был скачан | ☑ | ||
---|---|---|---|---|
0
Eugeneer
03.10.22
✎
19:22
|
1С может проверять ссылку?
Как убедится что по ссылке файл который уже был скачан и чтобы обрывать действие если тот же. |
|||
1
Eugeneer
03.10.22
✎
19:30
|
Я сейчас использую хэш сумму файла после скачки.
По блин это его скачивать все равно приходится. |
|||
2
Garykom
гуру
03.10.22
✎
19:33
|
(0) сервер должен возвращать хэш, логично?
|
|||
3
Eugeneer
03.10.22
✎
19:56
|
ХешСуммаФайла = MD5ХешФайл(URLИнфоФайла);
да я проверил. возвращает. по ссылке. получается проверить можно. |
|||
4
Eugeneer
03.10.22
✎
19:57
|
Смущает только что тут хэш несколько другой чем этот файл скачать.
|
|||
5
RomanYS
03.10.22
✎
20:05
|
(4) так это наверное хэш от текста ссылки)))
|
|||
6
zak555
03.10.22
✎
20:11
|
(5) это ему сложно
|
|||
7
Eugeneer
03.10.22
✎
20:11
|
)))) возможно и от текста да))
Функция MD5ХешФайл(тСтрока) Экспорт Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.ДобавитьФайл(тСтрока); Возврат Строка(Хеш.ХешСумма); КонецФункции |
|||
8
Eugeneer
03.10.22
✎
20:19
|
В общем фигово что нельзя. Можно было бы предотвратить лишние скачки.
|
|||
9
Eugeneer
03.10.22
✎
20:29
|
Размер можно
Функция РазмерФайлаHTTP(СоединениеHTTP, Знач ПутьНаСервере, Знач Заголовки = Неопределено) ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Заголовки); Попытка ПолученныеЗаголовки = СоединениеHTTP.ПолучитьЗаголовки(ЗапросHTTP);// HEAD Исключение Возврат 0; КонецПопытки; РазмерСтрокой = СтандартныеПодсистемыСервер.HTTPЗаголовкиВНижнийРегистр(ПолученныеЗаголовки.Заголовки)["content-length"]; ТипЧисло = Новый ОписаниеТипов("Число"); РазмерФайла = ТипЧисло.ПривестиЗначение(РазмерСтрокой); Возврат РазмерФайла; КонецФункции |
|||
10
Aleksey
03.10.22
✎
20:58
|
Я как то выложил у себя на фтп новую версию файла, так потом замучил я хромом качать. Он все время из кэша старую версию тянул так как считал что файл не обновился
|
|||
11
Aleksey
04.10.22
✎
01:44
|
(8) Зачем изобретать велосипед, почему не делать так как все делают. Текстовый файл с информацией об обновлении. Внутри все что хочешь от контрольной суммы, до json с номером версии датой обновления и прочими параметрами, вплоть до ссылки на файл
|
|||
12
Garykom
гуру
04.10.22
✎
06:26
|
(11) Это не обязательно
Если в начале (или известном месте) формата файла хранится его версия, можно скачать только часть файла и сравнить https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Range |
|||
13
MM
04.10.22
✎
08:18
|
При наличии поддержки в веб сервере полноценного HTTP, если известна дата предыдущего скачивания, то можно воспользоваться https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/If-Modified-Since.
Более точное отслеживание можно получить, если при загрузке сохранить https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/ETag , а потом с помощью https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match просить только изменившиеся данные. |
|||
14
Garykom
гуру
04.10.22
✎
08:42
|
(13) прикольно, не знал такого
|
|||
15
Garykom
гуру
04.10.22
✎
08:47
|
(13) фактически ETag это и есть хэш
|
|||
16
MM
04.10.22
✎
08:55
|
(14) Вот делают люди HTTP-сервисы, а стандартные заголовки у них не работают )
Я сам с удивлением узнал, то HTTP-сервисы 1С понимают https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Accept-Language и можно установить региональные установки сеанса, чтобы получать, например, ошибки на русском, когда 1С на английской ОС. (15) Реализация отдаётся на выбор сайта. |
|||
17
Eugeneer
06.10.22
✎
14:10
|
Пока что приходится все равно скачивать и уже после скачки сверять хеши
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |