Arhn - архитектура программирования

Сохраните файл PDF, созданный в сервлете, в каталог на компьютере

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

Теперь я хотел бы сохранить файл в заранее определенном каталоге файловой системы контейнера (скажем, D:\pdf в Windows). Итак, если я правильно понимаю, вместо ServletOutputStream мне понадобится FileOutputStream.

Поэтому я думаю, что мне нужно будет обойти запись в ServletOutputStream и использовать File IO. Что вы думаете о моем подходе? Буду очень признателен за любой совет!

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

05.09.2013

  • Сервлет может писать в поток; это все, что он может сделать. Сохранение в директорию — выбор пользователя. 05.09.2013
  • Это означает, что невозможно сохранить в файле код сервлета? 05.09.2013

Ответы:


1

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

FileFooStream будет записывать на локальный диск сервера. Он должен работать нормально, пока сервер разрешает доступ к файлам (App Engine не разрешает), и будет писать аналогично настольному приложению.

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

  • 2

    Насколько я знаю, вы не можете манипулировать клиентским каталогом через веб-программу. Вот где безопасность браузера вступает в игру; также песочница JVM не позволяла выполнять какие-либо апплеты с подозрительными действиями.

    Другой подход заключается в том, чтобы позволить клиенту решить, что делать с файлом PDF. Для этого вы можете использовать следующий шаг:

    1. Используйте тип Mime в заголовке ответа, чтобы сообщить браузеру, что вы собираетесь записать PDF-файл в выходной поток.
    2. Браузер примет ваш байт и попытается отобразить его с помощью плагина, такого как Adobe PDF reader (встроенного в браузер).
    3. Если в браузере есть плагин, он позволит пользователю решить, что делать с этим файлом (подсказка сохранить/открыть).
    4. Затем пользователь может решить, как открыть файл PDF.

    Вы можете взять подсказку из этот пост о том, как это сделать.

    05.09.2013

    3

    Глядя на вопрос, я думаю, вы немного смущены тем, как работает Servlet.

    См. сервлет — это класс Java, который выполняется на JVM на стороне сервера. То, что вы получаете от запроса и то, что вы устанавливаете в ответ, — это способ для вас общаться с базовым HTTP-сервером, который, наконец, будет использовать атрибуты из вашего запроса и ответа для генерации текста, который он может передать в клиентский браузер.

    Таким образом, поток ввода/вывода файла, который вы будете создавать в сервлете, даст вам доступ к каталогу машины, на которой выполняется этот сервлет. И вот он будет выполняться на вашем сервере. Таким образом, в лучшем случае вы можете контролировать, где входящий файл должен быть сохранен на сервере с использованием потока ввода/вывода файлов, но вы не можете получить доступ к каталогу клиентской машины с помощью сервлета.

    P.S. Я не рассматривал возможность отправки апплета в браузер.

    05.09.2013
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..