首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Apache Commons读取多部分表单中的其他参数

如何使用Apache Commons读取多部分表单中的其他参数
EN

Stack Overflow用户
提问于 2008-12-08 20:35:47
回答 3查看 12.9K关注 0票数 4

我有一个正在回发到servlet的文件上传表单(使用multipart/ form -data编码)。在servlet中,我尝试使用Apache Commons来处理上传。但是,我在表单中也有一些其他字段,它们只是普通字段。如何从请求中读取这些参数?

例如,在我的servlet中,我有这样的代码来读取上传的文件:

代码语言:javascript
复制
    // Create a factory for disk-based file items
    FileItemFactory factory = new DiskFileItemFactory();
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    Iterator /* FileItem */ items = upload.parseRequest(request).iterator();
    while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        ... do stuff ...
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-08 20:54:49

您可以尝试如下所示:

代码语言:javascript
复制
while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        if (thisItem.isFormField()) {
            if (thisItem.getFieldName().equals("somefieldname") {
                String value = thisItem.getString();
                // Do something with the value
            }
        }

    }
票数 10
EN

Stack Overflow用户

发布于 2011-11-03 04:17:29

我花了几天时间才弄明白这一点,但这是它的工作,你可以读取多部分的数据,文件和参数,这是代码:

代码语言:javascript
复制
    try {

        ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iterator = upload.getItemIterator(req);
        while(iterator.hasNext()){


            FileItemStream item = iterator.next();
            InputStream stream = item.openStream();
            if(item.isFormField()){
                if(item.getFieldName().equals("vFormName")){

                    byte[] str = new byte[stream.available()];
                    stream.read(str);
                    full = new String(str,"UTF8");
                }
            }else{
                byte[] data = new byte[stream.available()];
                stream.read(data);
                base64 = Base64Utils.toBase64(data);
            }
        }

    } catch (FileUploadException e) {

        e.printStackTrace();
    }
票数 3
EN

Stack Overflow用户

发布于 2008-12-08 20:39:36

你试过request.getParam()了吗?

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

https://stackoverflow.com/questions/350794

复制
相关文章

相似问题

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