Я создал сервлет, который считывает содержимое файла в байтовый массив, который впоследствии записывается в OutputStream ответа:
// set headers
resp.setHeader("Content-Disposition","attachment; filename=\"file.txt\"");
resp.setHeader("Content-Length", "" + fileSize);
// output file content.
OutputStream out = resp.getOutputStream();
out.write(fileBytes);
out.close();
Теперь я также написал «клиент», который должен выяснить, насколько велик файл. Это должно быть достаточно просто, так как я добавил заголовок «Content-Length».
URLConnection conn = url.openConnection();
long fileSize = conn.getContentLength();
Однако я немного не уверен в общей картине. Как я понимаю, мой собственный сервлет, все содержимое файла сбрасывается в OutputStream ответа. Однако вызывает ли вызов getContentLength () также фактическую загрузку данных файла как-то частично или полностью? Другими словами, когда я вызываю conn.getContentLength (), какая часть файла будет возвращена с сервера? Заголовки "отделены" от контента?
Весь вклад высоко ценится!