大家好,请问如何用用struts1上传图片呀?我在form包里面配置了对应的字段
public class EditInfoForm extends ActionForm{
         //封装上传文件域的属性
private File icon;
//封装上传文件名的属性
private String iconFileName;        。。提供了get/set方法
}我也在struts-config.xml中配置了
<form-bean name="EditInfoForm" type="com.ankang.scenicspot.web.form.EditInfoForm"></form-bean>
   <form-bean name="dynaEditInfoForm" type="org.apache.struts.action.DynaActionForm">    
              <form-property name="icon" type="java.io.File"></form-property>
        <form-property name="iconFileName" type="java.lang.String"></form-property>
   </form-bean>我在Action类中如何获得文件icon呢?
actionForm没有提供这样的方法呀,
有人说用formFile,请问这个怎么用呀,需要在哪里去配置这个东东吗?

解决方案 »

  1.   

    我刚刚看了别人写的,在EditInfoForm中配置FormFile
    就如:   
    public class EditInfoForm extends ActionForm{ 
           private FormFile icon; 
            private String iconFileName;         。。提供了get/set方法 
    } 并在struts-config.xml中配置好、但在Action类中如何获得这个FormFile icon呢?
    也是用ActionForm获得吗?用什么方法?
    求各位大侠帮帮忙!
      

  2.   

    怎么没有回答呢?
    在Acton类里面我后来用下面代码,确报类型转换异常!
    public ActionForward add(ActionMapping mapping,ActionForm form,
    HttpServletRequest request,HttpServletResponse response){
         EditInfoForm theForm = (EditInfoForm) form;
         FormFile icon = theForm.getIcon();//取得上传的文件
    }
    求一种获取FormFile 对象的方法?
      

  3.   

    注意要设置页面表单的enctype="multipart/form-data"并设置标签<html:file property="yourFile">formBean中设置private FormFile yourFile;可以在action中用yourFile.getFileName()来输出一下文件名字,看看是否获取到了该文件用InputStream is = yourFile.getInputStream();就可以来获取文件的输入流了
      

  4.   

    谢谢!今天查了好久才找到一种方法
    DynaActionForm addForm=(DynaActionForm)form;
    在action中用FormFile files = (FormFile) addForm.get("icon");
    用这个可以获得FormFile对象。
    请问还有其它获取FormFile对象的方法吗?
    我看到别人用了2楼的方法,但我用却不能强转!出现类型转换异常!
      

  5.   

    1. Form 表单中需要加上 enctype="multipart/form-data" 如:<form action="upload.do" method="post" enctype="multipart/form-data">
       标题:<input type="text" name="title"><br>
       文件:<input type="file" name="myfile"><br>
       <input type="submit" value="提交">
       </form>
    2.  ActionForm中使用FormFile来接收上传的文件 private FormFile myfile;3.  Action中的代码(应该很好看懂)               UploadActionForm uaf = (UploadActionForm)form;          FormFile myFile = uaf.getMyfile();                        FileOutputStream fos = new FileOutputStream("c:\\" + myFile.getFileName());

    fos.write(myFile.getFileData());
    fos.flush();

    fos.close();
      

  6.   

    类型转换异常的话 你多检查下配置文件 根本没必要加上(FormFile)的类型转换符
      

  7.   

    1、在表单中添加属性,如下:
    enctype="multipart/form-data"
    2、在form中使用org.apache.struts.upload.FormFile作为属性来接受文件:如下示例:
    private FormFile file;
    3、在action中创建一个文件输出流,并在构造方法中指定文件名,使用FormFile对象的getFileData()获取字节码数组,然后将该字节码数组写进输出流中,如下示例:
    UploadForm myform=(UploadForm)form;
    FormFile file=myform.getFile();
    FileOutputStream fos=new FileOutputStream("c:/ok.rmvb");
    fos.write(file.getFileData());
    fos.flush();
    fos.close();
    4、 可以在struts的配置文件中添加一个标签配置关于上传的设置,如下:
    <controller maxFileSize="10M"></controller>
    上面配置的是上传文件最大只能为10M