Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен servlet, который закачивает файл. Servlet / upload file 
:(
    Опции темы
antsh
Дата 24.10.2006, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 72
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Имеются все классы для выплнения задания.

GraphVerificationClass.java - основной класс, через него я парсю ХМЛ и на жёстком создаёт картинка графа.

Осталось сделать сервлет который бы:

1) Закачивал файл - тот самый ХМЛ, который я затем буду парсить.

2) Выдавал бы пользователю ту самую картинку графа, которая на выходе у GraphVerificationClass.java


Помогите с реализацией, не могу найти нормального рабочего примера, везде общие вещи.  smile 
PM   Вверх
w1nd
Дата 24.10.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 7
Всего: 54



С примером закачивающего сервлета? Вот из старенького проекта сервлет для закачки изображений (использует jakarta commons-fileupload):
Код
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.List;
import javax.imageio.*;
import javax.servlet.*;
import javax.servlet.http.*;

import java.awt.*;
import java.awt.image.*;

import org.apache.commons.fileupload.*;
import com.na.dao.*;
import com.na.dao.beans.*;

public class ImageLoadServlet extends HttpServlet {

  public ImageLoadServlet() {
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse resp)
      throws
      ServletException, IOException {

    boolean multiPart = FileUpload.isMultipartContent(request);

    if (multiPart) {
      try {
        DiskFileUpload upload = new DiskFileUpload();
        List /* of FileItem */ items = upload.parseRequest(request);

        FileItem fileItem = null, fieldItem = null;

        for (Iterator i = items.iterator(); i.hasNext(); ) {
          FileItem item = (FileItem)i.next();

          if (item.isFormField()) {
            fieldItem = item;
          }
          else {
            fileItem = item;
          }
        }

        try {
          Integer commodityIdentifier = processIdentifier(fieldItem);
          processUploadedFile(commodityIdentifier, fileItem);

          resp.sendRedirect(<...>);
        }
        catch (SQLException thrown) {
          throw new ServletException("DBMS error", thrown);
        }
      }
      catch (FileUploadException thrown) {
        throw new ServletException("Loading failed", thrown);
      }
    }
    else {
      throw new ServletException("Unsupported encoding type");
    }
  }

  private Integer processIdentifier(FileItem item)
      throws
      ServletException {
    String name = item.getFieldName();
    if (name.equals("commodity_id")) {
      return new Integer(item.getString());
    }
    else {
      throw new ServletException("Unsupported parameter - '" + name + "'");
    }
  }

  private void processUploadedFile(Integer commodityIdentifier, FileItem item)
      throws
      IOException, SQLException {
    InputStream inputStream = item.getInputStream();
    try {
      BufferedImage image = ImageIO.read(inputStream);

      if (image == null) {
        throw new IOException("Unsupported image format");
      }

      double smallRatio = Math.max(image.getWidth(), image.getHeight()) / 180.0;

      int smallWidth = (int)(image.getWidth() / smallRatio);
      int smallHeight = (int)(image.getHeight() / smallRatio);

      Image smallImage = image.getScaledInstance(smallWidth, smallHeight, Image.SCALE_SMOOTH);

      BufferedImage smallImageCopy = new BufferedImage(smallWidth, smallHeight, BufferedImage.TYPE_INT_RGB);
      smallImageCopy.getGraphics().drawImage(smallImage, 0, 0, smallWidth, smallHeight, null);

      ByteArrayOutputStream smallImageOutputStream = new ByteArrayOutputStream();
      ImageIO.write(smallImageCopy, "JPG", smallImageOutputStream);
      smallImageOutputStream.close();

      double largeRatio = Math.max(image.getWidth(), image.getHeight()) / 800.0;

      int largeWidth = (int)(image.getWidth() / largeRatio);
      int largeHeight = (int)(image.getHeight() / largeRatio);

      Image largeImage = image.getScaledInstance(largeWidth, largeHeight, Image.SCALE_SMOOTH);

      BufferedImage largeImageCopy = new BufferedImage(smallWidth, smallHeight, BufferedImage.TYPE_INT_RGB);
      largeImageCopy.getGraphics().drawImage(largeImage, 0, 0, largeWidth, largeHeight, null);

      ByteArrayOutputStream largeImageOutputStream =  new ByteArrayOutputStream();
      ImageIO.write(largeImageCopy, "JPG", largeImageOutputStream);
      largeImageOutputStream.close();

      <...>
    }
    finally {
      inputStream.close();
    }
  }

}

Ненужное вымарано.

Это сообщение отредактировал(а) w1nd - 24.10.2006, 09:04


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
y3u
Дата 24.10.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: 7
Всего: 13



ну а писать как обычно в респонз пишут...

Код

            data = (byte[]) ... ;
            response.setHeader("Content-Length", String.valueOf(data.length));
            response.setContentType(contentType);
            response.getOutputStream().write(data);
            response.flushBuffer();
            response.setStatus(HttpServletResponse.SC_OK);
 



--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.