使用 Apache commons 文件上传 API 在 Jsp 中上传多个文件

2024-05-24

我无法上传多个文件。我正在使用此代码。这里 itr.hasNext() 返回 false。

文件上传.jsp

<%@ page import="java.util.*" %>
   <%@ page import="java.util.Iterator" %>
   <%@ page import="java.io.File" %>
   <%@ page import="org.apache.commons.fileupload.servlet.*" %>
   <%@ page import="org.apache.commons.fileupload.disk.*"%>
   <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
   <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
   <%@ page import="org.apache.commons.fileupload.*"%>
   <%@ page contentType="text/html;charset=UTF-8" language="java" %>
   <center>
<table border="2">
        <tr>
        <td>
        <h1>Your files  uploaded </h1>
        </td>
        </tr>
   <%
 boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    System.out.println("isMultipart="+isMultipart);
    System.out.println(config.getServletContext());

           FileItemFactory factory = new DiskFileItemFactory();
           ServletFileUpload upload = new ServletFileUpload(factory);
           System.out.println(upload.parseRequest(request));    
           List items=null;
           try {
                items = upload.parseRequest(request);
           } catch (FileUploadException e) {
                   e.printStackTrace();
           }
           Iterator itr = items.iterator();
           while (itr.hasNext()) {
           FileItem item = (FileItem)(itr.next());
           out.println("itr");
           if (item.isFormField()) {
                    try{
                        String field=item.getFieldName();
                        String value=item.getString();
                        System.out.println("field="+value);
                    }
                    catch(Exception e){}
           } 
           else {
                   try {
                       out.println("nor done");
                           String itemName = item.getName();
                           out.println("1done");
                           File savedFile = new File("/home/saurabh/assignments/"+itemName);
                           item.write(savedFile);  
                           out.println("done");
                   } catch (Exception e) {
                           e.printStackTrace();
                   }
           }
           }

   %>
    </table>
   </center>

html 文件是:-

<html>
 <head><title>Upload page</title></head></p> <p><body>
 <form action="FileUpload.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">
   <center>
   <table border="2">
       <tr>
               <td align="center"><b>Multipale file Uploade</td>
           </tr>
       <tr>
               <td>
                       Specify file: <input name="file" type="file" id="file">
                   <td>
           </tr>
           <tr>
              <td>
                     Specify file:<input name="file" type="file" id="file">
                  </td>
        <tr>
                   <td>
                      Specify file:<input name="file" type="file" id="file">
                   </td>
                 </tr>
                 <tr>
                    <td align="center">
               <input type="submit" name="Submit" value="Submit files"/>
                        </td>
                 </tr>
    </table>
        <center>
 </form>
 </body>
 </html>

这是如何引起的以及如何解决这个问题?


您正在解析请求两次。第一次打印物品,第二次真正拿到物品进行处理。这是行不通的。它只能被解析一次。

删除以下无用行

System.out.println(upload.parseRequest(request));  

如果您确实打算出于某种原因打印已解析的项目,那么您应该这样做

System.out.println(items);

after您已经在其中解析了一次请求try block.


无关对于具体问题,JSP 并不是完成这项工作的最佳场所。在 servlet 中完成这项工作,并在放入请求范围的某个映射/bean 中收集结果,然后将请求转发到 JSP 以显示结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache commons 文件上传 API 在 Jsp 中上传多个文件 的相关文章

随机推荐

  • 构建 iOS 应用程序后退出代码 1 错误

    我正在尝试使用 RestKit 构建我的项目 当我构建它时 我收到以下错误 我尝试使用 Apple LLVM 3 0 和 LLVM GCC 4 2 进行编译 两者都产生相同的结果 任何人有任何想法是什么导致了这个问题 Ld Users Ji
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时
  • Swift:UICollectionViewCell didSelectItemAtIndexPath 更改背景颜色

    我可以轻松更改单元格的背景颜色CellForItemAtIndexPath method func collectionView collectionView UICollectionView cellForItemAtIndexPath
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p
  • 使用
    元素作为 JavaScript 代码的输入。这是最好的方法吗?

    各位 显然 我是编码新手 所以最近完成了一些有关 HTML 和 Javascript 的 Lynda 课程后 我的简单 HTML 页面遇到了困难 基本上 我想要的是使用 JavaScript 进行基本计算 让用户使用 HTML 输入两个数字
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 获取 wpf WriteableBitmap 的 DrawingContext

    有没有办法获得DrawingContext 或类似的东西 WriteableBitmap IE 让你调用简单的东西DrawLine DrawRectangle etc 种方法 而不是直接操作原始像素 我发现 Sixlettervariabl
  • 如何在 PHP 5.5 中获取文件的 MIME 类型?

    我在用mime content type 在 PHP 5 5 中获取 MIME 类型 但它抛出fatal error function not found 如何在 PHP 5 5 上实现这一目标 利用finfo http www php n
  • Pyramid 调试工具栏通过 HTTP 而不是 HTTPS 提供静态内容

    在我们的测试服务器上 我们使用金字塔调试工具栏 http docs pylonsproject org projects pyramid debugtoolbar en latest 但是 它生成http 指向静态内容 如 CSS 和 Ja
  • 如何使用 C# API 移动 TFS 文件?

    我一直在谷歌上搜索如何使用 TFS API 通过 C 移动文件 我们的想法是有一个文件夹 开发人员可以在其中放置数据库升级脚本 构建过程会在该文件夹中创建一个构建脚本 并将该文件夹上的所有文件移动到具有我们刚刚创建的数据库构建版本的新文件夹
  • 如何查找 mongoose 的所有集合

    我应该找到存储在 mongo 数据库中的所有集合 require app models schemas loading application schemas mongoose connect mongodb localhost test
  • 在 iOS 上创建 Excel XLS 文件

    我正在尝试创建 Excel 格式的报告 准备通过电子邮件发送 到目前为止 我发现最好 最简单的方法是创建一个 xml 文档 如下所示 并将其另存为 xls
  • 在实体框架中设置获取大小

    我正在将 ado net 代码转换为使用 EF 在我的 ado net 代码中我设置dataReader FetchSize command RowSize 1000与默认的获取大小相比 这极大 地提高了性能 当我将代码转换为 EF 时 性
  • 如何为 WCF IErrorhandler 设置 web.config

    无法使用正确的 web config 将 IErrorHandler 集成到我的项目中 我有一个成功工作的 WCF 正在被 net 4 中的 webclient 使用 但是当尝试将 IErrorhandler 设置为全局错误记录器作为我所有
  • 在 Play 中路​​由到静态文件! 2.0

    我正在尝试创建指向特定静态文件的路由 但我尝试的所有内容都以错误结束 我做了3种不同的尝试 1 GET file staticFile public html file html 我得到的错误 Compilation error strin
  • 无法获取 facebook sdk 示例中好友列表的所有字段以及在 Android 中仅获取 id、name 的好友选择器示例中的好友列表

    我正在开发 Facebook 示例演示 用于获取登录用户的所有好友列表 我成功运行了朋友选择器示例 但在提取朋友的所有详细信息 如电子邮件 名字 姓氏等 时遇到困难 我只得到 ID 姓名 如果有人有想法请回复 这是我的代码 public v
  • 如何检查 bootstrap-4 模式是否已经打开?

    我想检查某个模式是否已经打开 我已经尝试过这种方法 bootstrap 4 但对我不起作用 即使对话框打开 也总是给出 false myModal is visible myModal data bs modal isShown myMod
  • 使用 Apache commons 文件上传 API 在 Jsp 中上传多个文件

    我无法上传多个文件 我正在使用此代码 这里 itr hasNext 返回 false 文件上传 jsp