Комментарии 12
Ещё можно вспомнить про хедеры If-Match и If-Unmodified-Since которые позволят отловить ситуацию когда файл изменён в процессе скачивания.
+3
На подобный запрос сервер в ответ пришлёт два возможных статуса
Три, не считая ошибочных. Еще вы можете получить 200 OK
и весь файл целиком — потому что вы забыли про то, что сервер совершенно не обязан вообще поддерживать Range
. В ответе на HEAD
надо проверить наличие Accept-Ranges
, и что там написано (а то если там none
, вам тоже ничего не светит).
+8
А еще на большинство ошибочных статусов просто нельзя делать повторную попытку — потому что в случае авторизации повторная попытка ничего не исправит, а в случае таймаута — тупо тормознет процесс еще на одну величину таймаута.
В общем, авторские примеры кода — барахло полное.
>Дополним метод еще логами
А еще err.println — это не логирование.
В общем, авторские примеры кода — барахло полное.
>Дополним метод еще логами
А еще err.println — это не логирование.
+3
На 5хх коды стабильно шлю повтор и в большинстве (больше 80%) случаев получаю корректный ответ.
Таймауты тоже решаются стабильно, ибо если это не мертвый сервер, он может в какой то момент всё таки ответить успеть.
Впрочем, про код ничего говорить не буду, я пишу на шарпе.
Таймауты тоже решаются стабильно, ибо если это не мертвый сервер, он может в какой то момент всё таки ответить успеть.
Впрочем, про код ничего говорить не буду, я пишу на шарпе.
0
Знаете что ответят Вам PHP программисты?
В итоге для отдачи обычного бинарника грузится интерпретатор, берёт файл, пропускает через себя и отдает клиенту.
Расширенные заголовки при этом игнорируются. К сожалению, такая практика встречается довольно часто.
<?php
readfile('filename');
?>
В итоге для отдачи обычного бинарника грузится интерпретатор, берёт файл, пропускает через себя и отдает клиенту.
Расширенные заголовки при этом игнорируются. К сожалению, такая практика встречается довольно часто.
-1
<?php
$file = file_get_contents('URL');
<?
Но Вы же понимаете что такое уровни абстракции. Зачем программистам на PHP делать все это, что описано в статье? Это все должно быть в низкоуровневой библиотеке для PHP, в которой можно вызывать ее и все.
0
Программистам на Java всё это каждый раз тоже делать не нужно, и это тоже будет в библиотеке.
А для
или так
Как и ваши варианты, грузить будет как придётся, без контроля с вашей стороны.
А для
file_get_contents
в Java всегда можно и вот так сделать:byte[] content = new URL("...").openStream().readAllBytes();
или так
try (var output = new FileOutputStream("output_file")) {
new URL("...").openStream().transferTo(output);
}
Как и ваши варианты, грузить будет как придётся, без контроля с вашей стороны.
0
жаль что не рассмотрели вариант с перемоткой видео с поддержкой atom
0
Есть ли на уровне протокола аналогичный подход для upload'а файла?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как скачать файл порциями?