Помогите с загрузкой файлов в Java / J2EE - PullRequest
0 голосов
/ 12 июня 2009

Мне нужно загрузить файл, используя Apache fileupload с ProgressListener, но вместе с тем мне также нужно показать индикатор выполнения для состояния загрузки.

Фактическое требование - мне просто нужно разобрать локальный XML-файл, разобрать xml в соответствующие объекты и поместить их в базу данных. Нужно ли действительно загружать файл на сервер, чтобы его разобрать. Поскольку я получаю исключение, например, файл не найден на удаленном сервере, в то время как он нормально работает на моем локальном компьютере.

Буду признателен за любую быструю помощь.

Заранее спасибо !!!

Ответы [ 2 ]

1 голос
/ 12 июня 2009

Если у вас есть доступ к серверной части, советую отладить процесс загрузки. Исключение предполагает, что вы хотите открыть файл на сервере на основе имени загруженного файла. На вашем локальном компьютере это работает, потому что он работает в той же файловой системе. На стороне сервера Apache FileUpload получает двоичные данные, которые необходимо извлечь из потока данных запроса:


@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
  if (ServletFileUpload.isMultipartContent(request)) {
    FileItemFactory factory = new DiskFileItemFactory(Integer.MAX_VALUE, null);
    ServletFileUpload upload = new ServletFileUpload(factory);
    List items = upload.parseRequest(request);
    for (FileItem item : items) {
       byte[] data = item.get();
       // do something with the binary data
    }
  } else {
    System.err.println("Not a multipart/form-data");
  }
}

А также вам нужна форма:

<form name='frm' method="POST" action='UploadServlet' 
id="frm" enctype="multipart/form-data">
0 голосов
/ 12 июня 2009

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

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

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