在用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 Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...
综上所述,当你遇到`ENCTYPE="multipart/form-data"`的表单提交时,不要期望使用`request.getParameter()`直接获取文本字段的值,而是应该采用上述的特定方法进行处理。确保选择合适的方法取决于你的项目环境和需求...
5. **传递其他参数**:在使用Commons Fileupload时,可以通过创建自定义的RequestContext或使用Servlet容器提供的HttpServletRequest对象,将额外的参数以键值对的形式添加到请求中。这些参数会在解析请求时被识别并...
本篇将详细介绍如何使用Servlet来接收form表单提交的数据,并将其在网页上呈现。 一、Servlet生命周期 Servlet具有三个主要阶段:加载、初始化和服务。当客户端首次请求Servlet时,服务器会加载并初始化Servlet,...
本篇文章主要探讨如何在Servlet中处理AJAX POST请求,特别是当请求参数以`form data`和`request payload`两种不同形式传递时。 首先,理解HTTP请求的基本结构。GET请求的参数通常附加在URL后面,而POST请求的参数...
- **依赖库**:处理`multipart/form-data`数据需要使用特定的库,如Apache Commons FileUpload和Apache Commons IO。添加以下Maven依赖: ```xml <groupId>commons-fileupload <artifactId>commons-fileupload...
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 ...
在服务器端,无论是Servlet还是Struts框架,都会使用`HttpServletRequest`对象来获取表单数据。例如,可以通过`getParameter`方法来读取单个请求参数的值: ```java String firstName = request.getParameter(...
总之,"FileUploadServlet"是Java Web应用程序中实现文件上传功能的关键组件,它利用Servlet API处理HTTP请求,解析multipart/form-data格式的数据,安全地保存上传的文件,并与前端交互以提供反馈。理解并熟练运用...
在`multipart/form-data`编码中,每个表单字段被视为一个单独的数据部分,这些部分之间用一个预先定义好的分隔符来区分。每个数据部分包含一个`content-disposition`头,用于标识字段名称,如果是文件的话,还会有一...
对于multipart/form-data类型的表单,需要使用` Commons FileUpload`库或其他类似库(如Servlet 3.0+的Part接口)来解析请求。`HttpServletRequest`的`getParts()`方法可以获取到上传的文件。 6. **注意点** - ...
服务器端需要解析multipart/form-data格式的数据,提取其中的文件和其他参数,并将文件保存到指定位置。 ### 二、JSP文件上传的关键技术 #### 2.1 使用Servlet解析multipart/form-data 在JSP应用中,通常需要通过...
3. **Servlet实现**:在Servlet中,我们需要解析`multipart/form-data`请求。Java Servlet API没有内置的多部分解析器,但可以使用第三方库,如Apache Commons FileUpload。在`doPost`方法中处理文件上传。 ```java ...
然而,在这种情况下,通过`HttpServletRequest`的`getParameter`方法可能无法正确获取除文件之外的其他输入字段的值。本文将详细讲解如何在Java中处理这种情况。 首先,让我们了解`multipart/form-data`的作用。...
在`FileUploadServlet`类中,重写`doPost`方法,使用`HttpServletRequest`对象获取文件数据。可以使用Apache Commons FileUpload库或Java内置的`Part`接口来处理文件上传。例如: ```java import org.apache....
表单的`enctype`属性应设为`multipart/form-data`,以支持文件上传。 - 使用JavaScript监听CKEditor的“文件选择”事件,当用户选择文件后,自动提交表单。 4. **安全性和优化**: - 为了安全,应验证上传的文件...
注意,`enctype="multipart/form-data"`是必须的,因为这允许表单数据包含二进制内容,如文件。 接下来,我们需要编写Servlet来处理文件上传。Servlet需要继承`HttpServlet`类,并重写`doPost`方法,因为文件上传...
本文将纠正“关于'form表单提交数据编码方式和tomcat接受数据解码方式的思考'”一文中可能存在的错误,并深入探讨相关知识点。 首先,表单数据的编码方式主要取决于`<form>`标签的`enctype`属性。默认情况下,如果...
对于文件上传,我们需要解析`multipart/form-data`的数据,获取文件名、文件大小和二进制数据。 3. **边界标识**:在`multipart/form-data`数据中,每个部分由一个边界标识分隔。在解析请求时,我们需要找到这个...
- 使用`getInputStream()`方法获取`ServletInputStream`,这是读取上传数据的关键。 - 通过循环读取`ServletInputStream`直到没有更多的数据可用,将读取的字节转换为字符并写入到`Demo.out`文件中。 #### 四、...