通过JavaScript将文件传递给Java

时间:2012-01-22 09:48:54

标签: java javascript file-upload

我一直在尝试通过HTML中的表单加载文件并将其发送到Java以便处理它。我创建了一个JavaScript函数,所以我可以传递文件路径,但是它不起作用,因为它只发送文件的名称和扩展名,所以Java只会得到一个String来处理并抛出NullPointerEception

有谁知道我怎么能解决这个问题?

PS:我很抱歉noobie问题,但我不知道JS。

3 个答案:

答案 0 :(得分:0)

我认为你为java转发的文件必须通过输入输出操作以字节为单位读取beacuse java只能理解文本文件或字节数组,按字节数组存储任何图像,pdf等。

答案 1 :(得分:0)

“内容类型”multipart / form-data“应该用于提交包含文件,非ASCII数据和二进制数据的表单。”

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

What does enctype='multipart/form-data' mean?

所以基本上你在客户端<input type="submit" />上提交你的表单,像document.forms["myform"].submit();这样的一些java脚本,或者你的js库是如何做到的,只要你有{{{ 1}}在客户端的表单和一些服务器端组件(如servlet),它可以从请求中获取提交的二进制文件。

对于e真正全面的例子和解释,请看这篇文章: How to upload files to server using JSP/Servlet?

答案 2 :(得分:0)

我有一个像这样的常规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”参数获取文件并验证文件的输入。

所以我猜“上传”参数必须获取整个文件的咬合数组,以便它可以处理它......或者某种程度上文件的路径