Имя: Пароль:
1C
 
Повторная скачка файла - проверка что уже был скачан
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
Пока что приходится все равно скачивать и уже после скачки сверять хеши