Передать файл в Java через JavaScript - PullRequest
0 голосов
/ 22 января 2012

Я пытался загрузить файл через форму в HTML и отправить его на Java для его обработки.Я сделал функцию JavaScript, чтобы я мог передать путь к файлу, но он не будет работать, потому что он будет отправлять только имя и расширение файла, поэтому Java просто получит только строку для обработки и выдаст NullPointerEception.

Кто-нибудь знает, как я могу решить эту проблему?

PS: Извините за вопрос нуби, но я не знаю JS.

Ответы [ 3 ]

0 голосов
/ 22 января 2012

«Тип контента« multipart / form-data »должен использоваться для отправки форм, содержащих файлы, данные не ASCII и двоичные данные.»

http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2

Что означает enctype = 'multipart / form-data'?

Так что, в принципе, не имеет значения, как вы отправляете свою форму на клиенте, <input type="submit" />, какой-нибудь java-скрипт, такой как document.forms["myform"].submit();, или как это делает ваша библиотека js, если в вашей форме есть <input type="file" /> на клиенте и некотором серверном компоненте (например, сервлете), который может попасть в представленный двоичный файл из запроса.

Для действительно всестороннего примера и объяснения см. Этот пост: Как загрузить файлы на сервер, используя JSP / Servlet?

0 голосов
/ 23 января 2012

У меня есть обычная HTML-форма, подобная этой:

<form action="MultipartServlet" name="form" id="form" method="post" enctype="multipart/form-data">
<td><input type="file" name="upload" id="upload" />
<td><input type="button" value="Check" onclick="FileValidator.check()"/>

я не могу использовать type = "submit", потому что по непонятной причине приложение разрушает

код JS:

check: function() {
    var file = $F("upload");

        new Ajax.Request( 'url', {
            parameters: '...&action=fileValidator&upload=' + file,
            onSuccess: function(response) {
                var result = eval('(' + response.responseText + ')');
                if (result.success) {
                    displayErrorsFromFile();
                } else {
                    alert("Errors! " + response.responseText);
                }
            },
            onFailure: reportError
        })
    }

в коде Java, я просто пытаюсь получить файл через параметр «upload» и проверить правильность файла.

поэтому я предполагаю, что параметр «upload» должен получить массив bites всего файла, чтобы он мог его обработать ... или каким-либо образом путь к файлу

0 голосов
/ 22 января 2012

я думаю, что файл, который вы пересылаете для java, должен быть прочитан с помощью операции ввода-вывода в байтах, потому что java понимает только текстовый файл или байтовый массив, байтовый массив позволяет хранить любое изображение, pdf и т. Д.

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