我有一个上传文件元素的表单。表格如下:
<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"/>
查看您的代码后,我假设您的upload对象是Apache Commons File upload中的ServletFileUpload FileItem类的Javadoc列出了以下方法,这些方法可能是您正在寻找的: 在Java代码中添加类似的内容:long fileSize = item.getSize();
String fileName = item.getFieldName();