Я пытался найти каркас файла сервлета, который предоставляет немного больше, чем просто чтение файла с установкой соответствующих заголовков и все. В сети доступно бесчисленное множество сэмплов, большинство из которых довольно просты, и очень немногие (почти ни один) не поддерживают что-то более сложное, как я опишу ниже.
HTTP
Http предоставляет гораздо более богатые функции, такие как
- диапазоны, которые помогают реализовать резюме загрузки файла.
- управление кешем через etags и даты последнего изменения.
погуглить
Однако я не могу найти ничего, кроме простого примера файлового сервлета. К сожалению, «Java Servlet Framework для загрузки файлов» и другие подобные комбинации - это очень перегруженная форма, и в большинстве случаев Google возвращает веб-платформы, а не то, что облегчает поддержку некоторых или всех ранее упомянутых расширенных функций.
Thinking ...
Сверх того, как у меня в голове, фреймворк предоставит такой интерфейс:
FileProvider {
Date lastModified();
INputStream inputStream();
String etag();
...
}
- FileProvider берет путь к файлу и преобразовывает его в реальный файл, возможно что-то из базы данных и т. Д.
- если файл не изменился (определяется чтением FileProvider.lastModifier (), вот и все.
- Если запрос запрашивает диапазон, то ч / б будет читать FileProvider.inputStream (), записывая только заинтересованные диапазоны в HttpServletResponse.
- Значение etag будет использоваться во время фазы обсуждения, чтобы определить, поддерживаются ли диапазоны и т. Д.
- существовал бы другой интерфейс для "создания" FileProvider с указанием пути и т. Д.
Если кто-нибудь знает структуру, которая разделяет все неприятные фрагменты чтения заголовков и сравнения значений, которые были бы хорошими.
Лучший источник, который я смог найти, - это
http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html
но, к сожалению, в примере нет условия для вставки FileProvider и предполагается, что информация о пути из запроса отображается в файл на диске в некотором каталоге.