jsp中使用enctype="multipart/form-data" 提交了表单,但在action中用 up.initialize(getServlet(),request, response)中获取不到servletcinfig,试了很多种方法都不行,请各位高手帮忙解决,谢谢了!!!!

解决方案 »

  1.   

    有struts 还用纯 jspsmartupload  干嘛? Struts 直接 FileForm 不就行了
      

  2.   

    在struts1.x中有FileForm类:请看我整理的运行通过了:
    多文件上传:
    jsp代码:
    <html:form action="/multiupload"   enctype="multipart/form-data">
    文件一:<input type="file" name="file0"/><br>
    文件二:<input type="file" name="file1"/><br>
    <html:submit value="上传"/><html:cancel/>
    actionForm代码:
    package com.amaker.form;import java.util.List;import org.apache.struts.action.ActionForm;public class FileUploadForm extends ActionForm { private List myfiles; public List getMyfiles() {
    return myfiles;
    } public void setMyfiles(List myfiles) {
    this.myfiles = myfiles;
    }



    }
    action代码:
    package com.amaker.action;import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Collection;
    import java.util.Hashtable;
    import java.util.Iterator;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;
    import org.apache.struts.upload.MultipartRequestHandler;public class MultipartFileUploadAction extends Action { public ActionForward execute(ActionMapping arg0, ActionForm form,
    HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    MultipartRequestHandler multipartRequestHandler = form
    .getMultipartRequestHandler();
    Hashtable elements = multipartRequestHandler.getFileElements(); Collection values = elements.values();
    int k = 0;
    InputStream in = null;
    OutputStream out = null;
    for (java.util.Iterator m = values.iterator(); m.hasNext(); k++) { FormFile file = (FormFile) m.next();
    String fileName = file.getFileName();
    in = file.getInputStream();
    String path = this.servlet.getServletContext().getRealPath(
    "\\upload");
    out = new FileOutputStream(path + "\\" + fileName);
    System.out.println("你上传的文件的全路径:" + path + "\\" + fileName);
    byte[] buffer = new byte[in.available()];
    in.read(buffer);
    out.write(buffer);
    out.close();
    in.close();
    }
    return arg0.getInputForward(); }
    }
      

  3.   

    主要是在spring框架中获取不到表单传过来的数据流~~~
      

  4.   

    struts中已经有个FormFile了,直接用它就行了,简单得多!
      

  5.   

    4楼的兄弟传的代码把
    String path = this.servlet.getServletContext().getRealPath( "\\upload"); 
    改成
    String path=request.getSession().getServletContext().getRealPath("/upload");
    能用,就是如果只传一个图片就报错,很奇怪啊~~
      

  6.   

    额,找到原因了,呵呵~只要在JSP里删一个<input type="file" name="file1"/>就不报错了~~
      

  7.   

    fileupload已经够好用了,为什么还要用那个呢?
    去试试吧。
      

  8.   

    既然都已经在用ssh了,有现成的commons-fileupload不用去用一个更差的smartupload~`````