我一直在尝试通过HTML中的表单加载文件并将其发送到Java以便处理它。我创建了一个JavaScript函数,所以我可以传递文件路径,但是它不起作用,因为它只发送文件的名称和扩展名,所以Java只会得到一个String来处理并抛出NullPointerEception
。
有谁知道我怎么能解决这个问题?
PS:我很抱歉noobie问题,但我不知道JS。答案 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”参数获取文件并验证文件的输入。
所以我猜“上传”参数必须获取整个文件的咬合数组,以便它可以处理它......或者某种程度上文件的路径