我有一个表单来上传文件元素。表格如下:
<FORM name="dcdipap" enctype="multipart/form-data" method="post">
<input id="realfile1" type="file" style="position:absolute;visibility:hidden;"
onchange="document.getElementById('dummyfile1').value=this.value;if(validate())preview(this, '1');return true;">
<table cellpadding=0 cellspacing=0 border=0>
<tr><td>
<input id="dummyfile1" type="text" >
</td>
<td id="submitHead" class="buttonRegHead"> </td>
<td id="submitBody" align=center class="buttonRegBody">
<a class=buttonLabel href="#" onclick="document.getElementById('realfile1').click();return false;" >Browse</a>
</td>
<td id="submitTail" class="buttonRegTail"> </td>
</tr>
当选择文件并提交表单时,将调用servlet。我在servlet中的代码如下:
List<Object> items=null;
items = upload.parseRequest(req);
Iterator<?> iter = items.iterator();
FileItem item;
InputStream fileData = null;
String FilePath="";
while (iter.hasNext())
{
item = (FileItem) iter.next();
if(!item.isFormField()){
filePath = item.getName();
fileData = item.getInputStream();
}
}
编辑问题:
我在代码中犯了一些错误。当我提交上面的表单时,在servlet中,它甚至不进入循环内
if(!item.isFormField())
{
}
因此我无法获取文件名和文件数据。任何人都可以告诉我为什么会这样,即使我已宣布
<input type="file"/>
答案 0 :(得分:0)
在审核您的代码后,我认为您的上传对象是来自Apache Commons文件上传的 ServletFileUpload 类。
Javadoc of the FileItem class列出了以下可能正在寻找的方法:
在Java代码中添加类似的内容:
long fileSize = item.getSize();
String fileName = item.getFieldName();