contentType:multipart/form-data;boundary=-------------111111111111111111
post的数据,服务器端输出  System.out .print(Utils.inputStream2String(request.getInputStream()));   有数据
但服务器端解析的时候为空
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
List<FileItem> list = upload.parseRequest(request);   list 为空
求解

解决方案 »

  1.   

    用的是structs
      

  2.   

    代码贴出来看看?做的是文件上传吗?用struts2还直接用DiskFileItemFactory???
      

  3.   

    代码很简单,就是常用的取数据protected String getValueByFieldName(HttpServletRequest request,
    String FieldName) {
    try {
    System.out
    .print(Utils.inputStream2String(request.getInputStream()));
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setFileSizeMax(10*1024*1024);
    // 解决上传文件名的中文乱码
    upload.setHeaderEncoding(AppConfig.DefaultEncoding);
    List<FileItem> list = upload.parseRequest(request);
    for (FileItem item : list) {
    if (item.isFormField()) {
    if (FieldName.equals(item.getFieldName())) {
    return item.getName();
    }
    }
    }
    } catch (Exception e) {
    String str = e.getLocalizedMessage();
    System.out.print(str);
    }
    return null;
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>taigan_api</display-name>
    <servlet>
    <description>HelloWorldAction</description>
    <servlet-name>HelloWorldAction</servlet-name>
    <servlet-class>com.kunze.taigan.api.HelloWorldAction</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorldAction</servlet-name>
    <url-pattern>/helloWorldAction.do</url-pattern>
    </servlet-mapping>
    </web-app>
      

  4.   

    代码贴出来看看?做的是文件上传吗?用struts2还直接用DiskFileItemFactory???
    还有个问题,请求的时候写的是           multipart/form-data;boundary=11111111
    但是后台接受到的时候输出了一下,boundary就不是11111111了,而是 --FFghrP61JNhU8BMWUAZsJ3h62lIRdwuSi2xoBm(每次都不一样),也许这就是解析不出值的原因,但没找到改哪里。
      

  5.   

    Utils.inputStream2String(request.getInputStream()) 这里读完数据后是不是会关掉request的InputStream?
    所以后面parseRequest(request);已经没数据了