Как загрузить каталог через Grails или Java? - PullRequest
1 голос
/ 25 мая 2010

Каков наилучший способ загрузки каталога в Grails?

Я пытаюсь этот код:

  def upload = {
    if(request.method == 'POST') {
        Iterator itr = request.getFileNames();

        while(itr.hasNext()) {
            MultipartFile file = request.getFile(itr.next());
            File destination = new File(file.getOriginalFilename())

            if (!file.isEmpty()) {
                file.transferTo(destination)
                // success
            }
            else
            {
                // failure
            }
        }

        response.sendError(200,'Done');
    }
  }

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

Есть идеи?

1 Ответ

1 голос
/ 25 мая 2010

Здесь есть одно серьезное заблуждение. Размещенный вами код будет работать, только если сервер и клиент работают на физически на одной и той же машине (чего не будет в реальном мире) и , если вы используете Браузер MSIE с неправильным поведением для отправки полного пути по имени файла.

Фактически вы должны получить содержимое загруженного файла как InputStream и записать его в любой OutputStream обычным способом ввода-вывода Java. Имя файла можно использовать для создания файла с тем же именем на стороне сервера, но вы убедитесь, что вы удаляете неверный путь, отправленный MSIE, из имени файла.

Что касается вашего фактического функционального требования, HTML не предоставляет средств для загрузки полных каталогов или нескольких файлов одним элементом <input type="file">. Вам нужно будет создать клиентское приложение, способное на это, и обслуживать его с вашей веб-страницы, например, Java-апплет с использованием Swing JFileChooser. Для этого существуют сторонние решения, такие как JumpLoader .

...