ServletFileUpload 文件上传

做文件上传时,在其他项目里没问题。 这个就出问题了,感觉是被struts拦截了。最开始以为是jar包冲突,后来只留了一个版本的。发现还是有这个问题。注:上传问题,没有使用struts的
代码段:

 public class AServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
        File tmpDir = null;//初始化上传文件的临时存放目录
        File saveDir = null;//初始化上传文件后的保存目录
        public AServlet() {
        super();

        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request,response);

        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try{

        if(ServletFileUpload.isMultipartContent(request)){

        DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象

        dff.setRepository(tmpDir);//指定上传文件的临时目录

        dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte

        ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象

        sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸

        sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸

        FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合
        int i = 1;
        while(fii.hasNext()){

            FileItemStream fis = fii.next();//从集合中获得一个文件流

            if(!fis.isFormField() && fis.getName().length()>0){//过滤掉表单中非文件域

            String fileName = fis.getName().substring(fis.getName().lastIndexOf(""));//获得上传文件的文件名
            fileName=i+".jpg";
            BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流

            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(saveDir+"/\\"+fileName)));//获得文件输出流

            Streams.copy(in, out, true);//开始把文件写到你指定的上传文件夹
            i++;
            }

        }

        response.getWriter().println("File upload successfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗

        }

        }catch(Exception e){

        e.printStackTrace();

        }

        }

        public void init() throws ServletException {

        /* 对上传文件夹和临时文件夹进行初始化

        *

        */

        super.init();

        String tmpPath =  "c://tmpdir//";

        String savePath = "c:///tmpdir//";

        tmpDir = new File(tmpPath);

        saveDir = new File(savePath);

        if(!tmpDir.isDirectory())

        tmpDir.mkdir();

        if(!saveDir.isDirectory())

        saveDir.mkdir();

        }

    }


struts片段:
 <constant name="struts.custom.i18n.resources" value="message"></constant>
    <constant name="struts.multipart.maxSize" value="104857600"></constant>
    <constant name="struts.multipart.parser" value="jakarta"></constant>
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <constant name="struts.ognl.allowStaticMethodAccess" value="false" />
    <package name="struts2" extends="struts-default">
        <interceptors>
            <interceptor name="ucapInterceptor" class="com.linewell.ucap.interceptor.UcapInterceptor">
            </interceptor>
            <!-- 拦截器栈 -->
            <interceptor-stack name="ucapStack">
                <interceptor-ref name="ucapInterceptor">
                </interceptor-ref>
                <!-- 防止表单重复提交 -->
                <!--<interceptor-ref name="token"></interceptor-ref>    -->
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="ucapStack"></default-interceptor-ref>
        <!-- 全局跳转 -->
        <global-results>
            <result name="login" type="redirect">/login.jsp</result>
            <result name="error" type="redirect">/error.jsp</result>
        </global-results>
        <!--  全局异常-->
        <global-exception-mappings>
            <exception-mapping result="error" exception="com.linewell.ucap.resource.ManageException">
            </exception-mapping>
        </global-exception-mappings>

        <action name="BaseAction" class="com.linewell.ucap.action.base.BaseAction">
            <result name="success">/result.jsp</result>
        </action>

xml片段:
  <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>com.linewell.dw.AServlet</servlet-class>
        </servlet>
        <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/AServlet</url-pattern>
</servlet-mapping>

f12看下Network里面看看请求发过去了吗?

然后debug一下java看看,走到哪一步出的问题(另外,你这个是抛出异常,还是文件没过去啊?)

吧报的错误贴出来看看呀。。