原来有个项目,用jsp + tomvat5.5 + jdk1.5 + jdbc做的,字符集是gb2312,没有用什么框架,只是用jspsmart做文件上传。上传文件的jsp代码如下
Alter.jsp:
<form method="post" name="form1" action="AlterEnd.jsp" ENCTYPE="multipart/form-data">
<input type="file" name="file1" style="width:100%">AlterEnd.jsp:
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
          mySmartUpload.initialize(pageContext);
          //mySmartUpload.setTotalMaxFileSize(5000000);
          mySmartUpload.setMaxFileSize(500*1024*1024);
           // Upload
          mySmartUpload.upload();
          Files file; //注意这里,后面在这里报错了
          com.jspsmart.upload.File f;
          file=mySmartUpload.getFiles();
          f=file.getFile(0);
%>最近要增加新功能,就加入struts2、spring、heibernate框架,在web.xml中加入s2sh的配置。结果s2sh 可用了,原来的程序中jsp访问数据库啥的都没问题。唯独涉及文件上传时系统报错:java.lang.IllegalArgumentException: Files' name is invalid or does not exist (1205).在网上搜索一下,有人说页面缺少enctype="multipart/form-data",可我的jsp里已经加入这句话了。有人说在input file中加入name属性,我也有:<input type="file" name="file1" style="width:100%">以前程序运行都是好的,说明代码没问题,就是加入s2sh框架后出错了。现在原来程序中所有涉及文件上传的部分都不能用了。为什么?难道S2SH与jspsmart冲突?如果那样,除了重写所有上传文件的代码,还有什么办法吗?很着急!!分不多了,抱歉!

解决方案 »

  1.   

    我的web.xml配置如下:大家帮忙看下:
     
    <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

    <!--定义核心Filter FilterDispatcher -->
    <filter>
    <!-- 定义核心Filter的名称 -->
    <filter-name>struts2</filter-name>
    <!--定义核心Filter的实现类 -->
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
       <!-- 初始编码配置 -->
       <init-param>
         <param-name>struts.i18n.encoding</param-name>
         <param-value>gb2312</param-value>
       </init-param>
    </filter> <filter-mapping>
    <!--核心Filter的名称 -->
    <filter-name>struts2</filter-name>
    <!--使用该核心Filter来接受所有的Web请求 -->
    <url-pattern>/*</url-pattern>
    </filter-mapping> <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>  <servlet>
        <servlet-name>debugjsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
          <param-name>jspCompilerPlugin</param-name>
          <param-value>com.borland.jbuilder.webserverglue.tomcat.jsp.JasperSunJavaCompiler</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>debugjsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
      </servlet-mapping>
      

  2.   

    哦,忘了说,系统中还加入dwr了,会有问题吗?
      

  3.   

    刚才又测试一下,去掉web.xml中的struts2配置就可以上传了,看来怎是struts2与jspsmart冲突,怎么办?
      

  4.   

    你上面的过滤配置改下:
    <filter-mapping>
    <!--核心Filter的名称 -->
    <filter-name>struts2</filter-name>
    <!--使用该核心Filter来接受所有的Web请求 -->
    <url-pattern>*.action</url-pattern>
    </filter-mapping>