java - 使用 Servlet 3.0 上传图片

标签 java image tomcat servlets upload

我有一个简单的表单,enctype 为“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() );
}

这里可以获取到上传图片的大小,但是无法判断是不是简单的表单域。

我错过了什么?

你需要什么帮助我?

最佳答案

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)
}

并给我一些反馈。

希望对您有所帮助。

关于java - 使用 Servlet 3.0 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484223/

相关文章:

css - anchor 图源不显示的问题

image - GitHub 项目的官方图片托管?

tomcat - 如何在 LDAP 中使用身份验证设置 Tomcat?

java - Tomcat session 复制——不同机器配置

java - 更改列表中的项目并排序然后列出

java - 安卓。如何在不创建新 Activity 的情况下开始 Activity ?

java - 如何从Java程序执行命令

java - 我如何从这个 jogl 程序中获得每秒更多的帧数?

带有 JDBCRealm 的 Tomcat 9 DIGEST - 只接受摘要,不接受密码

html - 如何将图像设置为 div 的背景并将其 "ZOrder"设置为 0?