Служить статическому файлу изображения из файловой системы в сервлете? - PullRequest
3 голосов
/ 05 февраля 2011

Как мне передать файл изображения в файловой системе из сервлета?

Ответы [ 2 ]

2 голосов
/ 05 февраля 2011

Посмотрите здесь: Пример хранилища: возврат изображения в сервлете Ссылка не работает. Копия Wayback Machine вставлена ​​ниже:

// This method is called by the servlet container to process a GET request.
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    // Get the absolute path of the image
    ServletContext sc = getServletContext();
    String filename = sc.getRealPath("image.gif");

    // Get the MIME type of the image
    String mimeType = sc.getMimeType(filename);
    if (mimeType == null) {
        sc.log("Could not get MIME type of "+filename);
        resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        return;
    }

    // Set content type
    resp.setContentType(mimeType);

    // Set content size
    File file = new File(filename);
    resp.setContentLength((int)file.length());

    // Open the file and output streams
    FileInputStream in = new FileInputStream(file);
    OutputStream out = resp.getOutputStream();

    // Copy the contents of the file to the output stream
    byte[] buf = new byte[1024];
    int count = 0;
    while ((count = in.read(buf)) >= 0) {
        out.write(buf, 0, count);
    }
    in.close();
    out.close();
}
0 голосов
/ 05 февраля 2011

Ну, это жаль, что в спецификации сервлета нет четкого способа сделать это, если только изображение не находится в директории webapp.Контейнеры сервлетов также обычно не рекомендуют свои собственные способы сделать это.Очевидно, что контейнер должен делать это для обслуживания файлов, почему он не предоставляет функциональность?Почему бы не HttpServletResponse.sendFile(File)?

Лучше всего создать символические ссылки, чтобы ваши файлы находились в разделе веб-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...