【问题标题】:Flex File upload is not working in struts environment using JSPFlex文件上传在使用JSP的struts环境中不起作用
【发布时间】:2014-04-04 07:57:49
【问题描述】:

我正在使用 jsp 使用 common-fileupload 进行文件上传。它在 spring blaze-ds 和 flex 环境中运行良好。但是当我在 struts 和 flex 框架中使用相同的 jsp 时,我收到以下错误:

org.apache.jasper.JasperException: 在第 69 行处理 JSP 页面 /pages/Template_Upload.jsp 时发生异常

66:             FileItemFactory factory = new DiskFileItemFactory();
67:             ServletFileUpload upload = new ServletFileUpload(factory);
68:             //List<FileItem> items = upload.parseRequest(request);
69:             List<FileItem> items = upload.parseRequest(request);
70:             out.println(items);
71:             int counter = 0;
72:             


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)



root cause 
javax.servlet.ServletException: org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.pages.Template_005fUpload_jsp._jspService(Template_005fUpload_jsp.java:202)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
    org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:908)
    org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
    org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
    org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    org.apache.jsp.pages.Template_005fUpload_jsp._jspService(Template_005fUpload_jsp.java:136)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

请帮帮我.. 提前致谢

更新 这是我的 JSP。我将项目大小设为 0。因此它没有进入 for 循环并在指定路径中创建文件。

 String uploadpath = "C:\\XXXX\\XXXXX\\DataToUpload";
    uploadDir = uploadpath;
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);
    out.println(items);
    int counter = 0;
    for(FileItem item : items) {
        File uploadedFile = new File(uploadDir + File.separator + item.getName());
        uploadedFile.createNewFile();
        try 
         {
          item.write(uploadedFile);
         }
         catch(IOException e) {
           log.error("error" + e);
         }
      }

【问题讨论】:

  • 您的表单是否包含enctype="multipart/form-data"
  • 没有我的表单不包含 enctype="multipart/form-data"

标签: java jsp apache-flex file-upload struts2


【解决方案1】:

不,我的表单不包含enctype="multipart/form-data"

那么你得到错误也就不足为奇了

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException:请求不包含多部分/表单数据或多部分/混合流,内容类型标头为空

不知道flex文件上传,但是上传文件的时候,内容必须是multipart/form-data

如果没有指定内容类型,则使用默认的:application/x-www-form-urlencoded

【讨论】:

  • var request:URLRequest = new URLRequest(); request.url = UPLOAD_URL; request.contentType="multipart/form-data"; fr.upload(request);
  • 这是我的弹性代码。私有变量 fr:FileReference; var request:URLRequest = new URLRequest(); request.url = UPLOAD_URL; request.contentType="multipart/form-data"; fr.上传(请求);我不知道如何在弹性表单中指定 enctype="multipart/form-data"。所以我像这样向 JSP 发送请求。但我得到了同样的错误。同样在 JSP 中, List items = upload.parseRequest(request);当我尝试打印项目时,我得到的尺寸为 0。
  • 您可以通过编辑您自己的问题来发布您的 JS 和 JSP(已被私有和不必要的数据正确清理)吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多