使用Servlet 3.0上传图像

时间:2014-01-31 15:51:46

标签: java image tomcat servlets upload

我有一个简单的形式,其中包含“multipart”;我使用它将图像上传到我的服务器。我有两种可能的解决方案,但它们都不完整。

第一个解决方案:

FileItemIterator iterator = upload.getItemIterator( request );

while( iterator.hasNext() ){
    FileItemStream item = iterator.next();

    if( item.isFormField() ){
          // store IMG
    }

} // ~while( iter.hasNext() )

在此解决方案中,我无法获取上传文件的尺寸,但如果它是表单字段,我可以得到(使用item.isFormField()

我的第二个解决方案使用Servlet 3.0 API:

for( Part part: request.getParts() ){
    System.out.println( part.getSize() );
}

在这里,我可以获得上传图片的大小,但我不知道它是否是一个简单的表单字段。

我错过了什么?

您需要什么来帮助我?

1 个答案:

答案 0 :(得分:1)

正如FileItemStream

的文档中所述

isFormField()方法告诉这是否是一个简单的表单字段返回true,否则返回false。

因此对于上传图片,它将返回false

所以你应该做以下事情:

  if(! item.isFormField() ){
              // store IMG
        }else {

//simple form field.
       }

并参考此答案here,了解如何将InputStream转换为byte []以了解上传文件中有多少字节。

如果您使用的是servlet 3,请执行以下操作:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String username= request.getParameter("username"); // Retrieves <input type="text" name="username">
    Part filePart = request.getPart("file"); // Retrieves <input type="file" name="file">
    String filename = filePart.getName();
    InputStream filecontent = filePart.getInputStream();
    // ... (do your job here)
}

并给我一些反馈。

希望有所帮助。