在servlet中获取文件名



我有一个上传文件元素的表单。表格如下:

<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" >&nbsp;&nbsp;
</td>
    <td id="submitHead" class="buttonRegHead">&nbsp;</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">&nbsp;</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列出了以下方法,这些方法可能是您正在寻找的:

  • getFieldName()
  • getSize()

在Java代码中添加类似的内容:

long fileSize = item.getSize();
String fileName = item.getFieldName();

最新更新