Java 为什么当我请求文件名时会出现null?
下面的HTML代码片段向servlet发出POST请求Java 为什么当我请求文件名时会出现null?,java,html,jakarta-ee,file-upload,enctype,Java,Html,Jakarta Ee,File Upload,Enctype,下面的HTML代码片段向servlet发出POST请求SendFileName <form method="post" action="SendTheFileName" enctype="multipart/form-data"> <div id="Files_to_be_shared"> <input type="file" id="File" name="FileTag" />
SendFileName
<form method="post" action="SendTheFileName" enctype="multipart/form-data">
<div id="Files_to_be_shared">
<input type="file" id="File" name="FileTag" />
<input type="submit" value="Share" />
</div>
</form>
但是我得到了null
。为什么呢
我正在使用Apache commons进行文件上传。它工作得很好。我不知道为什么当enctype是multipart/form data而只使用jdk时,我会得到null。当您使用
enctype=“multipart/form data”
时,所有的表单参数都作为multipart传输
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
// Process the uploaded form items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
// ** here you get the non-file parameters **
} else {
processUploadedFile(item);
}
}
Servlet 3.0 API(Java EE 6)提供了访问多部分文章内容的方法:
看
您应该为文件设置一个,为每个参数设置一个。您得到的是
null
,因为当表单的entype为“multipart/form data”且输入类型为“file”时,它不会进入HttpServletRequestParameterMap()中
您必须使用Java EE 6中的另一个选项,如下所示:
Part filePart = request.getPart("FileTag"); // or "File" - I am not sure
// that not for id value
// you should search
String fileName = filePart.getName();
此外,如果您不仅可以使用JSF,而且还可以使用Jave EE servlet(在JSF 2.2中),那么这里有输入type=“file”的特殊标记:
这应该会有帮助。您必须使用commons file upload或类似的东西来解析请求。请尝试以下链接:@Renjith have to means?为什么它返回
null
?我认为问题在于enctype的b'coz。它是多部分/表单数据。您确定在正确的位置调用该文件吗?尝试使用“\SendTheFileName”
和。当参数不存在时,getParameter
返回null。是否有方法使用jdk获取文件名?上面的方法是使用ApacheCommonsNo,当使用multipart时,浏览器以multipart的形式发送所有内容:文件(数据+文件名)、参数。。。除非您自己编写RFC1867的实现,否则您必须使用一些库来提取每个部分。JavaSE不包括一个。你还没有使用Commons FileUpload吗?我正在使用。但我希望使用jsk来实现。你确定没有办法吗?不确定你的意思。如果您使用的是兼容JEE6的服务器,我添加了另一个答案。
Part filePart = request.getPart("FileTag"); // or "File" - I am not sure
// that not for id value
// you should search
String fileName = filePart.getName();
<h:inputFile value="#{myFileUploader.file}"/>