上传页面:
<form action="upload.do?method=testUpload" enctype="multipart/form-data"  method="post" >
  <p>用户名:
    <input name="user.userName" type="text" id="userName" />
</p>
  <p>密码:
    <input name="user.pwd" type="password" id="userPwd" />
</p>
  <p>头像:
    <input type="file" name="file"  id="filepic"  onchange="viewPic();" />
  </p>
  <p>
    <input type="submit" name="send" value="提交" />
  </p>
  <p>
  </p>
</form>但是:在struts配置文件中<action 
attribute="fileForm"
name="fileForm"

parameter="method" 
path="/upload" 
type="com.upload.action.UploadAction"  >
<forward name="file"  path="/upload.jsp"></forward>
</action>
当加上红色部分代码无法上传, 如果去掉可以上传图片,但是不能获取form 中的userName,  pwd 的值————————求助,

解决方案 »

  1.   

    配置中
    <action path="/upload" name="uploadForm" type="web.UploadAction" parameter="o">
    </action>表单
        <html:form action="upload.do?o=upload" method="post" enctype="multipart/form-data">
         <html:file property="uploadFile"></html:file>
         <html:submit value="上传"/>
        </html:form>
    action类
    public ActionForward upload(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
    DynaActionForm uploadForm = (DynaActionForm) form;// TODO Auto-generated method stub

    FormFile file=(FormFile)uploadForm.get("uploadFile");

    String fileName=file.getFileName();
    fileName=request.getRealPath("/upload")+"/"+fileName;

    byte[] buffer=new byte[100*1024];
    int length=-1;
    InputStream in=file.getInputStream();
    FileOutputStream out=new FileOutputStream(fileName);
    while((length=in.read(buffer))!=-1){
    out.write(buffer, 0, length);

    }
    in.close();
    out.close();


    return null;
    }
      

  2.   

    文件组件不能和其他表单元素一起进行相同的编码,即在同一个目标页面不能同时对文件表单元素和其他表单元素进行接收处理(jsp的内置对象request对象无法一起接收文件表单和其他表单元素的值)   这是因为一般的输入类型传送数据到服务器端时,所使用的编码方式是application/x-www-form-urlencoded, 但是若要传送文件表单元素中的数据到服务器端时,必须使用multipart/form-data ,因为双方传送数据所使用的编码方式不一样,因此在同一个页面中不能同时接受这些不同编码的数据,也不能在目标页面中使用request.getParameter()来接受文件组件传递过来的数据