a.jsp传到action中去我找了一下 但是测试都有问题 
我以前做的上传都是a.jsp到 b.jsp都是功能页面在jsp页面中,现在用放到action中
该怎么做啊
a.jsp到 b.jsp 的做法中,那个
SmartUpload su = new SmartUpload();
//上传初始化 
su.initialize(pageContext);
//设定上传限制 
1、这里的su.initialize(pageContext); 说的是初始化,但是pageContext是什么意识啊
我在action中 要报 pageContext 未定义 请问这个该怎么该了?2、我在http://community.csdn.net/Expert/topic/5735/5735120.xml?temp=.5600855这个帖中看到的方法,但是到他的action中的时候就不能运行了
但是可以得到 上传文件的路径了传过来的数据接收到了急急急,下午要完成,谢谢
可以帖代码嘛
测试就结贴

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/5725/5725533.xml?temp=.4575464zh 这个帖才对,打错了
      

  2.   

    http://community.csdn.net/Expert/topic/5725/5725533.xml?temp=.4575464这个帖子中的
     FormFile file = uploadFileForm.getFile();           为null为什么啊
      

  3.   

    package com.huadu.action;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 com.huadu.actionform.UploadActionForm;
    import org.apache.struts.upload.FormFile;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    public class UploadAction extends Action {
    public  ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest request,HttpServletResponse response) throws Exception { //WebFun getName = new WebFun();
    UploadActionForm uploadFileForm = (UploadActionForm) actionForm; //uploadForm是FormBean
      FormFile file = uploadFileForm.getFile();          //那个重要的类
      System.out.println(uploadFileForm.getFile()); 为什么这里是空啊
      String fName = file.getFileName();                //获得文件名
        InputStream streamIn = null;                      //输入输出流
        OutputStream streamOut = null;
        String sysroot = servlet.getServletContext().getRealPath("userinfo"); //获取图片文件夹路径
        String filePath = sysroot + "\\" + "89";       //最终路径
        try {
          streamIn = file.getInputStream();        //以下是上传的代码,不用变,固定的
          streamOut = new FileOutputStream(filePath);
          int bytesRead = 0;
          byte[] buffer = new byte[20480];
          while ( (bytesRead = streamIn.read(buffer, 0, 20480)) != -1) {
            streamOut.write(buffer, 0, bytesRead);
          }
          streamOut.close();
          streamIn.close();
          request.setAttribute("info", "上传成功啦");
          return actionMapping.findForward("fail");
        }
        catch (FileNotFoundException e) {
                request.setAttribute("error", "上传失败啦");
          e.printStackTrace();
          return actionMapping.findForward("fail");
        }
        catch (IOException e) {
          // TODO 自动生成 catch 块
          request.setAttribute("error", "上传失败啦");
          e.printStackTrace();
          return actionMapping.findForward("fail");
        }
    }
    }
    这个我action中的 什么地方错了吗?
    ------------------
    actionfrom
    private String fileName;
        private FormFile file;
        
        public String getFileName() {
                 return fileName;
        }
        public void setFileName(String fileName) {
                 this.fileName = fileName;
        }
         public FormFile getFile() {
                 return file;
        }
        public void setFile(FormFile file) {
                this.file = file;
        }-----------
    上传: <input type="FILE" name="fileName" size="30"><input type="submit" value="提交">
    页面 的什么地方错了嘛
    <input type="FILE" name="fileName" size="30"> 我把name="fileName"改成file会暴错
      

  4.   

    FormFile file = uploadFileForm.getFile();           为null为什么啊
    是不是表单的 enctype属性没有设置成multipart/form-data
    比如:<form   action="addad_do.jsp" method="post" enctype="multipart/form-data">
      

  5.   

    我设置了的 
    代码如下
    <form name="formm" action="/UploadAction.do" enctype="multipart/form-data">
      

  6.   

    <input type="FILE" name="fileName" size="30"> 我把name="fileName"改成file会暴错当然会报错啦,你的表单对象(即actionForm)里有fileName属性呀,你该了名称,actionForm到哪
    找file属性去。
      

  7.   

    但是我参考的那个帖子什么是设置的 file 
    在actionform中也有设置file
      

  8.   

    System.out.println(uploadFileForm.getFile()); 为什么这里是空啊
    <input type="FILE" name="fileName" size="30"> 我把name="fileName"改成file会暴错<input type="FILE" name="file">  name是应该改为"file",因为actionfrom里已经有file属性了,只不是不知道你改成这样以后报了什么错?
      

  9.   

    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.IllegalArgumentException: argument type mismatch
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      

  10.   

    <input type="FILE" name="file"> 肯定是没错的。把你的FormFile 类拿出来看看
      

  11.   

    FormFile 
    我没这个文件啊
    这个是到struts的
    import org.apache.struts.upload.FormFile;
      

  12.   

    System.out.println(uploadFileForm.getFile()); 为什么这里是空啊
    这句会不会有错?uploadFileForm.getFile().getFileName();试试
      

  13.   

    我只要设置成<input type="FILE" name="file">  nmae=file
    一提交就会暴那个错
    根本就过不去
    而且我用你说的那样
    一样就暴错,说不能从String类型转成FormFile类型的
      FormFile file = uploadFileForm.getFile();          //那个重要的类
      //要是在哪儿加就暴错
      System.out.println(uploadFileForm.getFile().getFileName());
      

  14.   

    <html:file property="fileName" size="50"/>这样写,
    form也改为<html:form>
    用struts标签试试
    属性名是fileName,因为struts会根据属性名fileName去找相应的get,set方法处理数据,而不是对应的属性file,即找到setFileName()和getFileName()来存取数据,
    你可以在work目录下面找到相对应的jsp编译后*_jap.java文件的代码调查一下struts的工作原理,或者分析一下源代码
      

  15.   

    我看错了,是属性是file,更正一下
      

  16.   

    建议取过一个名字,file好像不太好
      

  17.   

    我把名字换了fileName 一样不 行
    那个还是null
    另外
    a.jsp到 b.jsp 的做法中,那个
    SmartUpload su = new SmartUpload();
    //上传初始化 
    su.initialize(pageContext);
    //设定上传限制 
    1、这里的su.initialize(pageContext); 说的是初始化,但是pageContext是什么意识啊
    我在action中 要报 pageContext 未定义 请问这个该怎么该了?
    我是页面到页面的做法可以
    但是放到java文件中就不暴未定义啊
    su.initialize(pageContext);
    该怎么去设置?
      

  18.   

    http://topic.csdn.net/t/20040706/09/3148676.html同上:这个帖也是问如何初始化
    这个在struts中到底该怎么样去初始化了?
      

  19.   

    String path="uploads/";
       SmartUpload uploader=new SmartUpload(); 
     try{
       uploader.initialize(this.getServlet().getServletConfig(),request,response);//初始化
       
       uploader.setMaxFileSize(302400000);
       uploader.setAllowedFilesList("jpg,gif,JPG,GIF");
       uploader.upload();     String fileName  = uploader.getFiles().getFile(0).getFileName(); ////获取文件名
        System.out.println(fileName);
        String fileExt  = uploader.getFiles().getFile(0).getFileExt(); ////获取文件名

        //System.out.println(fileExt+"--c<br>"+getName.Name_upload());
       
          path += "20070830"+"."+fileExt;//完整文件名
          System.out.println(path);
        System.out.println("<br>"+path);
           uploader.getFiles().getFile(0).saveAs(path);//保存在容器目录下     System.out.print("上传成功");
        System.out.print("上传成功");
        return actionMapping.findForward("fail");
     
      } catch (Exception e) {
      System.out.println(e);
       System.out.print("上传失败ss");
      }       return actionMapping.findForward("fail");
        }在看这个有什么问题
    为什么到
      uploader.upload();
    就不能执行了啊
    暴错为:
    java.lang.NegativeArraySizeException
    上传失败ss
      

  20.   

    就是,谢谢我好像看到问题,但不知道怎么去解决1、
    FormFile file = uploadFileForm.getFile();           为null
    好像是我页面设置的那个上传
    <input type="FILE" name="fileName" size="30"> 中的name和actionform中的不一样
    没有接收的所以为null
    但是我要是设置成一样就要暴
    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.IllegalArgumentException: argument type mismatch
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    找了好多资料 都是设置成一样的 但是没人说有暴错信息出现
    这个错该怎么解决啊
      

  21.   

    上面的问题解决了,但是有新问题出了来
    我现在是用标签做就不会有上面的问题 String path="uploads/";
     UploadActionForm uploadActionForm =(UploadActionForm) actionForm;
       SmartUpload uploader=new SmartUpload(); 
       System.out.println(uploadActionForm.getFileName());
       System.out.println(uploadActionForm.getPicnum());
     try{
       uploader.initialize(this.servlet.getServletConfig(),request,response);//初始化
       
       uploader.setMaxFileSize(302400000);
       uploader.setAllowedFilesList("jpg,gif,JPG,GIF");
       uploader.upload();     String fileName  = uploader.getFiles().getFile(0).getFileName(); ////获取文件名
        System.out.println(fileName);
        String fileExt  = uploader.getFiles().getFile(0).getFileExt(); ////获取文件名

        //System.out.println(fileExt+"--"+getName.Name_upload());
       
          path += "20070830"+"."+fileExt;//完整文件名
          System.out.println(path);
       
           uploader.getFiles().getFile(0).saveAs(path);//保存在容器目录下     System.out.print("上传成功");
        System.out.print("上传成功");
        return actionMapping.findForward("fail");
     
      } catch (Exception e) {
      System.out.println(e);
       System.out.print("上传失败sss");
      }       return actionMapping.findForward("fail");
        }这是我的代码
    现在运行到 uploader.upload();这一布就不行了,cpu马上90%多
    不在向下运行
    请问这个怎么解决啊?
      

  22.   

    上传解决了,但是是用的struts自带的上传的
    在网上查资料的时候看到一个说法是:jspsmartupload不能用在sturts的action做上传
    是嘛?
    用那个始终不能上传uploader.upload();就不能在向下运行了
      

  23.   

    to dengdai520()  
     实在不好意思  这几天没来 才看到你的帖子 
    我用的上传是struts自带的 上传代码很简单 就那几句 用smartupload 你试试下面这个初始化方法
    public void init(ServletConfig config) throws ServletException {
    this.config = config;
    }
    SmartUpload upload = new SmartUpload();upload.initialize(config, request, response);
      

  24.   

    没事
    解决了 我还是用的struts自己带的上传做了
    初始话我知道了 
    uploader.initialize(this.servlet.getServletConfig(),request,response);//初始化 
    那几天在网上找了好了关于用jspsmartupload做上传的
    但找到的都是是说jspsmartupload不能用在sturts的action做上传但不知道是不是真的 但是我测试就到uploader.upload();就不能在向下运行了 cpu 100%
      - -!
    这几天忘了进 现在结贴 谢 大家了