struts2的文件上传,谁能给我思路,让我解决问题。100分直接给他。急用。

解决方案 »

  1.   

    直接发http文件传输请求,后台保存。和struts2可以没关系。
      

  2.   

    第一步:导入commons-fileupload-1.2.1.jar ,commons-io-1.3.2jar版本可能有所变化,但是只要记得是这两个jar包!
    第二部:把form的enctype设置为multipart/form-data
    例如
     <form action="<%=basePath%>test/test.action" method="post" enctype="multipart/form-data">
       <input type="file" name="image"/><br/>
       <input type="submit" value="上传"/>
       </form>第三步
    例子
    package com.action;
    import java.io.File;
    import java.io.IOException;
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionContext;
    public class UploadAction {
    private File image;
    private String imageFileName;
    public String getImageFileName() {
    return imageFileName;
    }
    public void setImageFileName(String imageFileName) {
    this.imageFileName = imageFileName;
    }
    public File getImage() {
    return image;
    }
    public void setImage(File image) {
    this.image = image;
    }
    public String execute() throws Exception{
    String realpath=ServletActionContext.getServletContext().getRealPath("/images");
    File file=new File(new File(realpath), imageFileName);
    if(!file.getParentFile().exists()){
    file.getParentFile().mkdirs();
    }
    FileUtils.copyFile(image, file);//复制
    ActionContext.getContext().put("message", "上传成功!");
    return "message";
    }
    }一个以前的例子,希望能帮助到你,注意一点的是上传文件的大小是不能超过5m(默认)
    你可以在struts.xml中配置这样一句
    <constant name="struts.multipart.maxSize" value="100000000"></constant>value为文件的大小,自己去定义超过好几十M的文件建议不要用这种方式。会失败的!
      

  3.   

    记得action中的imageFileName是根据你前台form中的<input type="file" name="image">决定的。
    如果你name是file,则action中则为fileFileName