首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用多部分发送附加数据

用多部分发送附加数据
EN

Stack Overflow用户
提问于 2013-02-27 06:07:14
回答 5查看 64.7K关注 0票数 12

我使用apache-commons-fileuploadclientserver(使用JSPServlet)获取文件。

JSP/

代码语言:javascript
复制
<form method="POST" action="GetFile" enctype="multipart/form-data">
<input type="file" name="datafile">
<input type="text" name="text1">
<input type="submit" value="Next">
</form>

Servlet: GetFile

代码语言:javascript
复制
System.out.println(request.getParameter("text1"));

我能够将文件上传到服务器,但是我无法获得text1servlet中的值(我在servlet中获取text1null值),我需要这个表单中的textfield提交一些附加信息,同时将它上传到server

  • 表单的enctype="multipart/form-data"选项不允许其他表单数据被提交吗?如果它不允许它,那么我必须将这个附加的textfield发送到server的其他选项是什么。
  • 或者我的代码中还有其他问题吗?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-27 06:17:24

表单的enctype="multipart/form-data"选项不允许其他表单数据被提交吗?如果它不允许它,那么我必须将这个附加的textfield发送到服务器的其他选项是什么。

不,使用enctype="multipart/form-data"没有问题。您可以获得其他字段,然后以这样的形式存档。

或者我的代码中还有其他问题吗?

是的,就目前而言。在使用enctype="multipart/form-data"时,不能直接使用request.getParameter(name);获取参数。在使用它时,表单字段作为请求的参数不可用,它们包含在流中,因此无法以正常的方式获得它。您可以在the docs of using commons-fileupload#中找到一种方法来做到这一点。

票数 14
EN

Stack Overflow用户

发布于 2013-02-27 06:36:05

这些参数并没有丢失,只是它们是请求流的一部分。

您必须从请求中获取所有项,并根据它们的项类型迭代并相应地处理它。

代码语言:javascript
复制
List  items = upload.parseRequest(request);

以下是你如何获得它的方法

代码语言:javascript
复制
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {

      String name = item.getFieldName();//text1
      String value = item.getString();

    } else {
        processUploadedFile(item);
    }
}
票数 14
EN

Stack Overflow用户

发布于 2015-07-20 09:57:09

代码语言:javascript
复制
MultipartRequest req = new MultipartRequest(request, UPLOAD_PATH, 1024 * 1024 * 1024);
    out.print(req.getParameter("contractNo"));
    out.println("<BR>");
    Enumeration files = req.getFileNames();
    while (files.hasMoreElements()) {
        String name = (String) files.nextElement();
        String filename = req.getFilesystemName(name);
        String type = req.getContentType(name);
        File uploadedFile = req.getFile("xlFile");
        FileInputStream fis = new FileInputStream(uploadedFile);
        BufferedReader in = new BufferedReader(new InputStreamReader(fis));

        FileWriter fstream = new FileWriter(UPLOAD_PATH + name, true);
        BufferedWriter out11 = new BufferedWriter(fstream);

        String aLine = null;
        while ((aLine = in.readLine()) != null) {
            //Process each line and add output to Dest.txt file
            out11.write(aLine);
            out11.newLine();
        }

        // do not forget to close the buffer reader
        in.close();

        // close buffer writer
        out11.close();
    }

以上代码将与其他表单数据一起读取文件,只需查看MultipartRequest req对象的MultipartRequest req方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15105322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档