Вопрос

Мы запускаем tomcat и генерируем PDF-файлы "на лету".У меня нет заранее заданного размера файла, поэтому я не могу напрямую ссылаться на файл на сервере.Поэтому я напрямую отправляю выходные данные.

response.setContentType("application/force-download");
OutputStream o = response.getOutputStream();

И затем я напрямую вывожу данные в этот OutputStream.

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

Редактировать Я знаю размер файла, я просто не могу сказать ПОТОКУ, насколько велик файл.

Это было полезно?

Решение

Объект ответа должен иметь setContentLength ( Длина набора ) способ:

// Assumes response is a ServletResponse
response.setContentLength(sizeHere);

Другие советы

Сериализуйте поток байтов PDF в файл или в виде массива байтов, вычислите его размер, установите размер и запишите его в выходной поток.

Я верю, что ты сам решаешь этот вопрос:Цитата:У меня нет заранее заданного размера файла, поэтому я напрямую отправляю выходные данные.

Если у вас нет нужного размера, вы не сможете его отправить....

Почему бы не сгенерировать PDF-файл во временной файловой системе, или в файловой системе на базе оперативной памяти, или в файле карты памяти "на лету"?затем вы можете получить размер файла.

response.setContentType("приложение / принудительная загрузка");ответ.setContentLength(размер здесь);OutputStream o = ответ.getOutputStream();

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top