zoukankan      html  css  js  c++  java
  • Struts2 上传文件

    struts2框架的文件上传:
        * 单文件上传:
            * 在动作类action中声明相关属性:
                * 在动作类action中,要声明与页面中表单name属性同名的属性,同名的属性的类型时File类型;
                * 在动作类action中,要声明[同名的属性]ContentType,类型时String类型;
                * 在动作类action中,要声明[同名的属性]FileName,类型时String类型
                * 给所有属性提供get和set方法
            * 在业务方法中,处理文件上传:
                * 获取要上传文件的路径,保存的位置
                * 在目标文件夹内,创建一个与上传文件同名的文件
                * 通过FileUtils工具类提供copyFile()方法,将临时文件内容拷贝到目标文件夹下的那个同名的文件
            * 设置上传文件的总大小
                * 在struts.xml文件中,<constant name="struts.multipart.maxSize" value="2097152000"></constant>
            * 设置上传文件的大小、类型和扩展名:
                * 在自定义的配置文件中,在action标签下:
                    <!-- 配置拦截器的参数,这里是文件上传拦截器 -->
                    <interceptor-ref name="defaultStack">
                          <!--
                              配置文件上传拦截器的参数
                                  * 与定义参数的顺序无关
                                  * 允许的类型(allowedTypes)和允许的扩展名(allowedExtensions)必须保持一致
                           -->
                          <!--
                              * 配置上传文件的大小
                                  * struts.xml文件中配置的是上传文件的总大小
                                  * 这里配置的是上传文件的单个大小
                           -->
                          <param name="fileUpload.maximumSize">20971520</param>
                          <!-- 配置上传文件允许的类型,如果配置多个值的话,用","隔开 -->
                          <param name="fileUpload.allowedTypes">text/plain,application/msword</param>
                          <!-- 配置上传文件的扩展名,如果配置多个值的话,用","隔开 -->
                          <param name="fileUpload.allowedExtensions">.txt</param>
                    </interceptor-ref>
                 * 自定义上传文件的错误提示信息:
                     * 在动作类action同目录下,创建一个名为fileuploadmessage.properties资源文件(名为自定义)
                     * 改资源文件配置如下:
                         struts.messages.error.uploading=Error uploading: {0}
                        struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}
                        struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}
                        struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}
            
            
        * 多文件上传:
            * 所有流程于配置都与单文件上传一致。
            * 需要注意的是:
                * 在页面中,虽然是多文件上传,但是页面中表单的name属性的值必须保持一致;
                * 在动作类action中声明的相关属性,类型改成数组;
                * 在业务方法中,相关处理流程改成单文件上传的循环。

    1 <form action="${pageContext.request.contextPath}/upload/FileUpLoad.action" name="form1"  method="post" enctype="multipart/form-data">
    2     上传文件:<input type="file" name="uploadFile"/>
    3     <input type="submit" value="上传"/>    
    4 </form>
     1 <package name="upload" namespace="/upload" extends="struts-default">
     2         <action name="FileUpLoad" class="cn.test.upload.FileUpLoads">
     3             <result name="success">/success.jsp</result>
     4             <result name="input">/error.jsp</result>
     5             
     6             <interceptor-ref name="defaultStack">
     7             <!-- 
     8                           * 配置上传文件的大小
     9                               * struts.xml文件中配置的是上传文件的总大小
    10                               * 这里配置的是上传文件的单个大小
    11             -->
    12             <param name="fileUpload.maximumSize">20971520</param>
    13             <!-- 配置上传文件允许的类型,如果配置多个值的话,用","隔开 -->
    14             <param name="fileUpload.allowedTypes">text/plain,application/msword</param>
    15             <!-- 配置上传文件的扩展名,如果配置多个值的话,用","隔开 -->
    16             <param name="fileUpload.allowedExtensions">.txt</param>
    17             </interceptor-ref>
    18             
    19         </action>
     1 private File uploadFile;//上传的文件(要与form表单中input的name一致)
     2     private String uploadFileContentType;//上传的文件类型
     3     private String uploadFileFileName;//上传的文件名称
     4     public File getUploadFile() {
     5         return uploadFile;
     6     }
     7     public void setUploadFile(File uploadFile) {
     8         this.uploadFile = uploadFile;
     9     }
    10     public String getUploadFileContentType() {
    11         return uploadFileContentType;
    12     }
    13     public void setUploadFileContentType(String uploadFileContentType) {
    14         this.uploadFileContentType = uploadFileContentType;
    15     }
    16     public String getUploadFileFileName() {
    17         return uploadFileFileName;
    18     }
    19     public void setUploadFileFileName(String uploadFileFileName) {
    20         this.uploadFileFileName = uploadFileFileName;
    21     }
    22     @Override
    23     public String execute() throws Exception {        
    24         System.err.println("conn success .......");
    25         ServletContext sc=ServletActionContext.getServletContext();
    26         String path=sc.getRealPath("/uploadFile");//目标目录
    27         File file=new File(path,uploadFileFileName);//读取源文件
    28         try {
    29             FileUtils.copyFile(uploadFile, file);//存储文件,参数:源文件,目标目录
    30         } catch (IOException e) {
    31             e.printStackTrace();
    32         }
    33         
    34         uploadFile.delete();//删除缓存
    35         return "success";
    36     }

    多文件上传:

    private File[] uploadFiles;
        private String[] uploadFilesContentType;
        private String[] uploadFilesFileName;    
        public File[] getUploadFiles() {
            return uploadFiles;
        }
        public void setUploadFiles(File[] uploadFiles) {
            this.uploadFiles = uploadFiles;
        }
        public String[] getUploadFilesContentType() {
            return uploadFilesContentType;
        }
        public void setUploadFilesContentType(String[] uploadFilesContentType) {
            this.uploadFilesContentType = uploadFilesContentType;
        }
        public String[] getUploadFilesFileName() {
            return uploadFilesFileName;
        }
        public void setUploadFilesFileName(String[] uploadFilesFileName) {
            this.uploadFilesFileName = uploadFilesFileName;
        }
        public String saveFiles() throws Exception {
            System.err.println("conn success......");
            ServletContext sc=ServletActionContext.getServletContext();
            String path=sc.getRealPath("/files");
            for(int i=0;i<uploadFiles.length;i++)
            {
                File file=new File(path,uploadFilesFileName[i]);
                
                FileUtils.copyFile(uploadFiles[i], file);
                uploadFiles[i].delete();            
            }
            return "success";
        }


     

  • 相关阅读:
    “三本主义”引领中国式管理
    “赢”销有道
    3分钟打动客户:电话销售实战技能训练
    乌合之众文摘
    Android Log工具类
    IOC原理
    解决header,footer等HTML5标签在IE(IE6/IE7/IE8)无效的方法
    让浏览器不再显示 https 页面中的 http 请求警报<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    用meta name="renderer" content="webkit|ie-comp|ie-stand"来切换360双核安全浏览器的极速模式和兼容模式
    前端开发的正确姿势——各种文件的目录结构规划及引用
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4207724.html
Copyright © 2011-2022 走看看