在servlet

时间:2015-12-23 14:17:26

标签: java file servlets

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

<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"/>

1 个答案:

答案 0 :(得分:0)

在审核您的代码后,我认为您的上传对象是来自Apache Commons文件上传的 ServletFileUpload 类。

Javadoc of the FileItem class列出了以下可能正在寻找的方法:

  • getFieldName()
  • 的getSize()

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

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