Храните PDF в течение ограниченного времени на сервере приложений и делайте его доступным для загрузки

Привет, я использую PrimeFaces 5 / JSF 2 и tomcat!

Может кто-нибудь показать мне или дать мне представление о том, как хранить PDF-файлы в течение ограниченного времени на сервере приложений (я использую tomcat), а затем загружать его (если это то, что пользователь запрашивает). Эта функциональность относится к счетам, поэтому я не могу использовать dataExporter.

Чтобы быть более конкретным, я в значительной степени реализовал это, но я не уверен в этом. Один большой вопрос: где хранить мои сгенерированные файлы? Я просматривал, и люди говорили, что сохранить файлы в webApp или в каталоге tomcat нехорошо. Какой у меня другой solutiuon?

Используйте File#createTempFile() . Временная папка, управляемая сервлетконтейнером, доступна как атрибут области приложения с ключом ServletContext.TEMPDIR .

 String tempDir = (String) externalContext.getApplicationMap().get(ServletContext.TEMPDIR); File tempPdfFile = File.createTempFile("generated-", ".pdf", tempDir); // Write to it. 

Затем просто передайте имя автогенерируемого файла всем, кто отвечает за его обслуживание. Например

 String tempPdfFileName = tempPdfFile.getName(); // ... 

Наконец, как только тот, кто отвечает за его обслуживание, вызывается с именем файла в качестве параметра, например простым сервлетом , а затем просто передавайте его следующим образом:

 String tempDir = (String) getServletContext().getAttribute(ServletContext.TEMPDIR); File tempPdfFile = new File(tempDir, tempPdfFileName); response.setHeader("Content-Type", "application/pdf"); response.setHeader("Content-Length", String.valueOf(tempPdfFile.length())); response.setHeader("Content-Disposition", "inline; filename=\"generated.pdf\""); Files.copy(tempPdfFile.toPath(), response.getOutputStream()); 

Смотрите также:

  • Как временно сохранить сгенерированный файл в веб-приложении на основе сервлета
  • Рекомендуемый способ сохранения загруженных файлов в приложении сервлета

Ваш вопрос нечеткий, но если мое понимание хорошее:

Во-первых, если вы хотите сохранить PDF в течение ограниченного времени, вы можете создать задание, которое очищает PDF-файлы каждый день или неделю или все, что вам нужно.

Для загрузки вы можете использовать ( http://www.primefaces.org/showcase/ui/file/download.xhtml ) для загрузки любого файла с сервера приложений.

  • Предварительный просмотр изображения перед загрузкой Angularjs
  • ASP.NET Как передать файл пользователю
  • Excel VBA для ответа на приглашение загрузки Internet Explorer 11 в Windows 10?
  • Xcode - установить средства командной строки
  • Как мне ZIP-файл на C #, без использования сторонних API-интерфейсов?
  • Как загрузить файлы на серверной папке с помощью jsp
  • Visual C ++ 2008 Express Загрузить ссылку Dead?
  • Двоичные файлы повреждены - Как загрузить двоичные файлы с помощью AngularJS
  • IE: невозможно загрузить * из *. Не удалось открыть этот интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден
  • Загрузите файл с сервера NodeJS с помощью Express
  • Как доставить большие файлы в ASP.NET Response?
  • Interesting Posts

    Инструкции по настройке двух мониторов для Windows 8

    Форма представления в условно отображаемом компоненте не обрабатывается

    MS Word: управление приоритетами между стилями таблицы и абзаца

    Перебирайте все элементы управления в форме, даже в групповых ящиках

    css framework для приложения с существующей таблицей стилей

    Версия XSLT в iPhone

    R grep: есть ли оператор AND?

    Есть ли программное обеспечение, которое может индексировать содержимое реестра для быстрого поиска?

    Как начать намерение, передав ему некоторые параметры?

    Что именно делает runtime.Gosched делать?

    Что произойдет, если Android-приложение будет выпущено с возможностью отладки?

    Цитирование через поиск в Bash, где имя файла содержит пробелы

    Отладчик Android Studio выделяет неправильные строки

    как блокировать виртуальную клавиатуру при нажатии на edittext в android?

    Можно использовать два classа Java с одинаковым именем и одним пакетом?

    Давайте будем гением компьютера.