Как проверить сумму передачи файла с сервлетом Java и HttpURLConnection - PullRequest
0 голосов
/ 20 июля 2010

Я пытаюсь гарантировать передачу файла.Я думаю, что я мог бы сделать это с некоторой контрольной суммой.

Кроме того, из-за некоторых внутренних проблем, мне нужно сделать это с потоковой передачей.

Я думал о вычислении дайджеста до и послепередача, но ошибка появится только в конце передачи.Я ищу какую-то чанкованную контрольную сумму с повторной отправкой в ​​случае ошибки.

Есть предложения?

Спасибо!

1 Ответ

1 голос
/ 21 июля 2010

Я думаю, что вам придется что-то делать на более высоком уровне в стеке - HTTP не имеет возможности ретранслировать часть среднего потока ответа. Как только клиент делает HTTP-запрос, он должен получить полный HTTP-ответ, прежде чем он сможет сделать другой запрос. HTTP-чанки в основном для облегчения поддержки соединений без необходимости заранее вычислять длину содержимого ответа.

Если мы говорим здесь о клиенте и сервере (что, я полагаю, так и есть, поскольку этот вопрос не имеет смысла, если вы говорите о браузере), то, возможно, один из способов сделать это будет для сервера нарезать файл на части и заставить клиента запрашивать каждый фрагмент файла по одному, используя соединение keep-alive. Если вы отправите обратно контрольную сумму для каждой части в ответе (то есть в заголовке ETag), вы можете рассчитать контрольную сумму на клиенте, чтобы убедиться, что вы получили правильные байты. Если контрольная сумма не совпадает, просто передайте клиентский запрос снова.

...