jsp页面代码

 
 或者 
  
 

服务后台代码:

需要两个jar包一个是commons-fileupload.jar,另一个是commons-io.jar

//注意,file并不是指前端jsp上传过来的文件本身,而是文件上传过来存放在临时文件夹下面的文件    private File upload;//上传的文件内容的对象与表单中的name属性一致         private String uploadContentType;//Struts2约定的代表上传文件的内容类型(MIME)    private String uploadFileName;//Struts2约定的代表上传的文件的名    省略了get,set方法           //文件上传方法    public String upload(){        //服务端存放上传文件目录        String destPath = ServletActionContext.getServletContext().getRealPath("/upload");        System.out.println(destPath);        File file=new File(destPath);        if(!file.exists()) file.mkdirs();        System.out.println(file);        try {            FileUtils.copyFile(upload, new File(file,uploadFileName));        } catch (IOException e) {            e.printStackTrace();            return ERROR;        }                return SUCCESS;                    }

strut配置

/WEB-INF/pages/order/orderdetail.jsp

上传后的文件保存在tomcat安装路径/webapps/应用名称/upload文件夹下

我的机器为

D:\Program Files\apache-tomcat-7.0.62\webapps\admin\upload

Struts 2是通过Commons FileUpload文件上传。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件

再添加<constant name="struts.multipart.maxSize" value ="10240000" />,Struts2的文件上传功能默认最大只能上传2M大小。这句重新指定了上传文件的最大限制,单位是字节。以这句为例,上传文件不能超过 10240000字节。注意,不能写成1024*1000*10这种形式。

在<package>标签之外添加<constant name="struts.multipart.saveDir" value ="/temp"/>,这句指定了上传文件的临时存放目录,以这句为例,临时存放目录为应用所在根目录下的temp文件夹,假设我的应用放在D:\Program Files\apache-tomcat-6.0.24\webapps下,那么临时存放目录就是D:\temp。也可以指定一个绝对路径。目录不存在也没关系,会自动创建。

struct 配置文件上传拦截器

        
        
            
            
                
                    p_w_picpath/gif,p_w_picpath/pjpeg,p_w_picpath/x-png,p_w_picpath/jpg                
                
900000
                        
            
            
            
/GoodsPic/upload
            
/uplode.jsp
            
/succ.jsp        

the request was rejected because its size (3020812) exceeds the configured maximum (2097152)