`
klq
  • 浏览: 5515 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

用form-data格式传数据,后台servlet的httpservletrequest无法获得值

阅读更多
在用highcharts报表插件时,用自己写的servlet生成图片,始终不能获得传输到后台的值,highcharts会传四个值到servlet,分别为width,type,svg,filename;

刚开始用request.getParameter("type");request.getParameter("svg");
获取传递过来的值,结果值为null;

原因:highcharts用类似文件的格式传递数据

------WebKitFormBoundarywzfipkN3Y5Ob91BE
Content-Disposition: form-data; name="filename"

chart
------WebKitFormBoundarywzfipkN3Y5Ob91BE
Content-Disposition: form-data; name="type"

image/jpeg
------WebKitFormBoundarywzfipkN3Y5Ob91BE
Content-Disposition: form-data; name="width"

800
------WebKitFormBoundarywzfipkN3Y5Ob91BE
Content-Disposition: form-data; name="svg"

<svg xmlns:xlink="http://www.w3.org/1999/xlink" ......</svg>
------WebKitFormBoundarywzfipkN3Y5Ob91BE--

直接用httpservletrequest的.getParameter()方法无法获得值;

解决办法:

导入commons-fileupload.jar

            String type = null;
            String svg = null;
            String filename = null;
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List items = upload.parseRequest(request);
            for (Iterator i = items.iterator(); i.hasNext();) { 
                FileItem fileItem = (FileItem) i.next(); 
                String field = fileItem.getFieldName(); 
                if(field.equals("type")){ 
                          type = fileItem.getString(); 
                          continue; 
                }else if(field.equals("svg")){ 
                         svg = fileItem.getString(); 
                         continue; 
                }else if(field.equals("filename")){ 
                         filename = fileItem.getString(); 
                         continue; 
                }
            }
即可取得由上述格式(form-data)传输的值。
分享到:
评论

相关推荐

    解决java enctype multipart form-data文件上传传值问题

    ### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...

    java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法 ?

    综上所述,当你遇到`ENCTYPE="multipart/form-data"`的表单提交时,不要期望使用`request.getParameter()`直接获取文本字段的值,而是应该采用上述的特定方法进行处理。确保选择合适的方法取决于你的项目环境和需求...

    上传文件fileupload+解决enctype= multipart/form-data无法传递其他参数

    5. **传递其他参数**:在使用Commons Fileupload时,可以通过创建自定义的RequestContext或使用Servlet容器提供的HttpServletRequest对象,将额外的参数以键值对的形式添加到请求中。这些参数会在解析请求时被识别并...

    servlet接收form表单提交的数据

    本篇将详细介绍如何使用Servlet来接收form表单提交的数据,并将其在网页上呈现。 一、Servlet生命周期 Servlet具有三个主要阶段:加载、初始化和服务。当客户端首次请求Servlet时,服务器会加载并初始化Servlet,...

    Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法

    本篇文章主要探讨如何在Servlet中处理AJAX POST请求,特别是当请求参数以`form data`和`request payload`两种不同形式传递时。 首先,理解HTTP请求的基本结构。GET请求的参数通常附加在URL后面,而POST请求的参数...

    Java中,当表单含有文件上传时,提交数据的如何读取(吐血版)

    - **依赖库**:处理`multipart/form-data`数据需要使用特定的库,如Apache Commons FileUpload和Apache Commons IO。添加以下Maven依赖: ```xml &lt;groupId&gt;commons-fileupload &lt;artifactId&gt;commons-fileupload...

    servlet2.4doc

    Called by the servlet container to indicate to a servlet that the servlet is being taken out of service. DIGEST_AUTH - Static variable in interface javax.servlet.http.HttpServletRequest String ...

    03-Form-Data-Chinese.pdf

    在服务器端,无论是Servlet还是Struts框架,都会使用`HttpServletRequest`对象来获取表单数据。例如,可以通过`getParameter`方法来读取单个请求参数的值: ```java String firstName = request.getParameter(...

    FileUploadServlet_javaweb文件上传servlet_

    总之,"FileUploadServlet"是Java Web应用程序中实现文件上传功能的关键组件,它利用Servlet API处理HTTP请求,解析multipart/form-data格式的数据,安全地保存上传的文件,并与前端交互以提供反馈。理解并熟练运用...

    关于servlet的应用实例1

    在`multipart/form-data`编码中,每个表单字段被视为一个单独的数据部分,这些部分之间用一个预先定义好的分隔符来区分。每个数据部分包含一个`content-disposition`头,用于标识字段名称,如果是文件的话,还会有一...

    Servlet 获得参数

    对于multipart/form-data类型的表单,需要使用` Commons FileUpload`库或其他类似库(如Servlet 3.0+的Part接口)来解析请求。`HttpServletRequest`的`getParts()`方法可以获取到上传的文件。 6. **注意点** - ...

    jsp中关于文件上传的讲解代码

    服务器端需要解析multipart/form-data格式的数据,提取其中的文件和其他参数,并将文件保存到指定位置。 ### 二、JSP文件上传的关键技术 #### 2.1 使用Servlet解析multipart/form-data 在JSP应用中,通常需要通过...

    Java Servlet上传文件

    3. **Servlet实现**:在Servlet中,我们需要解析`multipart/form-data`请求。Java Servlet API没有内置的多部分解析器,但可以使用第三方库,如Apache Commons FileUpload。在`doPost`方法中处理文件上传。 ```java ...

    获取POST数据的值.doc

    然而,在这种情况下,通过`HttpServletRequest`的`getParameter`方法可能无法正确获取除文件之外的其他输入字段的值。本文将详细讲解如何在Java中处理这种情况。 首先,让我们了解`multipart/form-data`的作用。...

    jsp,servlet普通表单+文件上传

    在`FileUploadServlet`类中,重写`doPost`方法,使用`HttpServletRequest`对象获取文件数据。可以使用Apache Commons FileUpload库或Java内置的`Part`接口来处理文件上传。例如: ```java import org.apache....

    CKEditor 上传文件(Servlet实现)

    表单的`enctype`属性应设为`multipart/form-data`,以支持文件上传。 - 使用JavaScript监听CKEditor的“文件选择”事件,当用户选择文件后,自动提交表单。 4. **安全性和优化**: - 为了安全,应验证上传的文件...

    jsp+servlet文件上传

    注意,`enctype="multipart/form-data"`是必须的,因为这允许表单数据包含二进制内容,如文件。 接下来,我们需要编写Servlet来处理文件上传。Servlet需要继承`HttpServlet`类,并重写`doPost`方法,因为文件上传...

    关于\"form表单提交数据编码方式和tomcat接受数据解码方式的思考\"一文的纠错

    本文将纠正“关于'form表单提交数据编码方式和tomcat接受数据解码方式的思考'”一文中可能存在的错误,并深入探讨相关知识点。 首先,表单数据的编码方式主要取决于`&lt;form&gt;`标签的`enctype`属性。默认情况下,如果...

    非组件上传Servlet

    对于文件上传,我们需要解析`multipart/form-data`的数据,获取文件名、文件大小和二进制数据。 3. **边界标识**:在`multipart/form-data`数据中,每个部分由一个边界标识分隔。在解析请求时,我们需要找到这个...

    用JavaBean实现文件上传

    - 使用`getInputStream()`方法获取`ServletInputStream`,这是读取上传数据的关键。 - 通过循环读取`ServletInputStream`直到没有更多的数据可用,将读取的字节转换为字符并写入到`Demo.out`文件中。 #### 四、...

Global site tag (gtag.js) - Google Analytics