`

struts2中<s:file>标签的使用

阅读更多

上传单个文件

 

fileTag.jsp

 

<s:form action="uploadaction" method="post" enctype="multipart/form-data" >
   <s:file label="上传" theme="simple" name="upload"/>
   <s:submit value="上传"/>
</s:form>

 

struts.xml

 

<action name="uploadaction" class="com.butone.struts2.taguser.UploadAction" method="upload">
       <!-- 配置fileUpload的拦截器 -->  
                 <interceptor-ref name="fileUpload">  
                            <!-- 配置允许上传的文件类型 -->  
                   <param name="allowedTypes">  
                      image/bmp,image/png,image/gif,image/jpeg,image/jpg,application/msword,text/plain  
                   </param>  
                            <!-- 配置允许上传的文件大小 -->  
                   <param name="maximumSize">2000000000</param>  
                 </interceptor-ref>  
                 <interceptor-ref name="defaultStack" />  
   <result>/taguser/result_fileTag.jsp</result>
   <result name="input">/taguser/fileTag.jsp</result>
  </action>

 

UploadAction.java

 

public class UploadAction extends ActionSupport {

 // 封装单个上传文件域的属性
 private File upload;
 // 封装单个上传文件类型的属性
 private String uploadContentType;
 // 封装单个上传文件名的属性
 private String uploadFileName;

 // 动态设置上传文件保存地址

 private String savePath;

 public String getSavePath() {
  // return ServletActionContext.getRequest().getRealPath("");
  String onload = "C:\\report\\cached\\";
  HttpServletRequest request = ServletActionContext.getRequest();
  request.setAttribute("onload", onload);
  // return ServletActionContext.getRequest().getContextPath();
  return onload;
 }

 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }

 // 上传单个文件的文件类型的setter和getter方法
 public void setUploadContentType(String uploadContentType) {
  this.uploadContentType = uploadContentType;
 }

 public String getUploadContentType() {
  return (this.uploadContentType);
 }

 // 上传单个文件的文件名的setter和getter方法
 public void setUploadFileName(String uploadFileName) {
  this.uploadFileName = uploadFileName;
 }

 public String getUploadFileName() {
  return (this.uploadFileName);
 }

 public File getUpload() {
  return upload;
 }

 public void setUpload(File upload) {
  this.upload = upload;
  // savePath = ServletActionContext .getRequest().getRealPath("");
 }

 // 上传单个文件
 public String upload() {
  try {
   // 以服务器的文件保存地址和原文件名建立上传文件输出流
   System.out.println(ServletActionContext
     .getRequest().getRealPath("")
     + File.separator
     + "images"
     + File.separator
     + getUploadFileName()+"路径");
   FileOutputStream fos = new FileOutputStream(ServletActionContext
     .getRequest().getRealPath("")
     + File.separator
     + "images"
     + File.separator
     + getUploadFileName());
   // 以上传文件建立一个文件上传流
   FileInputStream fis = new FileInputStream(getUpload());
   // 将上传文件的内容写入服务器
   byte[] buffer = new byte[1024];
   int len = 0;
   while ((len = fis.read(buffer)) > 0) {
    fos.write(buffer, 0, len);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return SUCCESS;
 }

}

result_fileTag.jsp

 

       文件路径:<s:property value="savePath" />/images/<br>
               <s:property value="#request.onload" /> <br>
               <img src="<s:property value='#request.onload'/>\0010.jpg.gif">
       <!-- 根据上传文件的文件名,在页面上显示上传的图片 -->  
         文件为:<s:property value="uploadFileName"/><br>

 

 

上传多个文件

fileuploads.jsp

 

<s:fielderror></s:fielderror>
                <!--  <input type="button" onclick="addComponent();" value="在上传一个" name="button" />  -->
                <br />
                <s:form action="uploadactions"  method="post" enctype="multipart/form-data">
                         <s:file name="upload" label="路径"/>
                         <s:file name="upload" label="路径"/>
                         <s:file name="upload" label="路径"/>
                        <s:submit value="上传"/>
                </s:form>

 

struts.xml

 

<action name="uploadactions" class="com.butone.struts2.taguser.UploadActions" method="upload">
       <!-- 配置fileUpload的拦截器 -->  
            <interceptor-ref name="fileUpload">  
                <!-- 配置允许上传的文件类型 -->  
                <param name="allowedTypes">  
                    image/bmp,image/png,image/gif,image/jpeg,image/pjpeg,image/jpg,application/msword,text/plain
                </param>  
                <!-- 配置允许上传的文件大小 -->  
                <!-- <param name="maximumSize">2000000000</param>  -->  
            </interceptor-ref>  
            <interceptor-ref name="defaultStack" />  

   <result>/taguser/fileuploadoutput.jsp</result>
   <result name="input">/taguser/fileuploads.jsp</result>
  </action>

 

UploadActions.java

 

public class UploadActions extends ActionSupport {
 
 //封装多个上传文件域的属性  
    private List<File> upload = new ArrayList<File>();  
    // 封装多个上传文件类型的属性  
    private List<String> uploadContentType = new ArrayList<String>();  
    // 封装多个上传文件名的属性  
    private List<String> uploadFileName = new ArrayList<String>();  
      
    //动态设置上传文件保存地址  
    private String savePath;  
      
    public String getSavePath() {
     System.out.println("getSavePath()!!!!!");
     
     System.out.println(savePath+"++++++++++++++++++++++++++++++");
        return savePath;  
    }  
 
    public void setSavePath(String savePath) {
     System.out.println("setSavePath()!!!!!");
        this.savePath = savePath;
       // savePath = "E:\\butone\\struts2.2\\WebRoot\\images\\"+getUploadFileName();
    }    
 
    //上传多个文件对应文件内容的setter和getter方法  
    public List<File> getUpload() {  
        return upload;  
    }  
    public void setUpload(List<File> upload) {
     System.out.println("----------------    setUpload(List<File> upload)     ----------------");
        this.upload = upload;  
    }  
      
    //  上传多个文件的文件类型setter和getter方法   
    public List<String> getUploadContentType() {  
        return uploadContentType;  
    }  
    public void setUploadContentType(List<String> uploadContentType) {  
        this.uploadContentType = uploadContentType;  
    }  
 
    // 上传多个文件的文件名的setter和getter方法   
    public List<String> getUploadFileName() {  
        return uploadFileName;  
    }  
    public void setUploadFileName(List<String> uploadFileName) {  
        this.uploadFileName = uploadFileName;  
    }  
 
    public String upload() {  
     
     //savePath = "E:\\butone\\struts2.2\\WebRoot\\images\\";
     savePath = ServletActionContext.getRequest().getRealPath("");
     
     System.out.println("upload()!!!!!");
        //上传多个文件  
        List<File> files = getUpload();  
        // String ext ="";  
        FileOutputStream fos = null;  
        FileInputStream fis = null;  
        byte[] buffer = new byte[1024];  
        int len = 0;  
        Random rd = new Random();  
        System.out.println(files.size()+"               ----------------");
        System.out.println(getSavePath());
        for (int i = 0; i < files.size(); i++) {  
            try {  
                //以服务器的文件保存地址和当前时间组合文件名建立上传文件输出流  
                // ext =uploadFileName.get(i).substring(uploadFileName.get(i).lastIndexOf('.'));  
                 /* fos = new FileOutputStream(getSavePath()+ File.separator+ 
                 * DateFormatUtil.getCurrentCustomFormatDateTime(DateFormatUtil.DATE_TIME_FORMAT_14) + 
                 * String.valueOf(rd.nextInt(1000))+ext); 
                 */ 
             System.out.println(getSavePath()+"------------------------getsavepath!!!");
                fos = new FileOutputStream(getSavePath() + File.separator  
                        + uploadFileName.get(i));  
                // 以上传文件建立一个文件上传流  
                fis = new FileInputStream(files.get(i));  
                // 将上传文件的内容写入服务器  
                len = 0;  
                while ((len = fis.read(buffer)) > 0) {  
                    fos.write(buffer, 0, len);  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
         return SUCCESS;  
    }  
}

fileuploadoutput.jsp

 

<!-- 输出上传的表单里的文件标题属性 -->  
         文件路径:<s:property value="savePath" /><br>
               <s:property value="#request.onload" /> <br>
       <!-- 根据上传文件的文件名,在页面上显示上传的图片 -->  
         文件为:<s:property value="uploadFileName"/><br> 
        
        <s:iterator value="uploadFileName">
         <img src="<s:property />" />
         <!-- 就是为了打印图片名称,但好像不支持中文图片的 -->
         <s:property/>
        </s:iterator>

 

分享到:
评论

相关推荐

    struts2 标签库 帮助文档

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接,类似于html里的&lt;a&gt;&lt;/a&gt; 3. &lt;s:...

    structs day03.zip

    1.文件上传:指将本地文件上传到服务器指定目录下。在struts框架中,文件上传需要用到&lt;s:file&gt;标签,该标签是一个表单标签,要放在&lt;s:form&gt;标签中。现在看一个文件上传的实例,进而讲解各个标签的含义及其用法。

    dangdang和smartstruts2.rar

    &lt;%@taglib uri="/struts-tags" prefix="s"%&gt; &lt;img src="image.do" id="img1"/&gt; &lt;a href="javascript:;" onclick="document.getElementById('img1').src='image.do?' + (new Date().getTime());"&gt;换一张试试看&lt;/a&gt;...

    网上商城需求报告

    通用电子商务购物平台 ... &lt;%@taglib uri="/struts-tags" prefix="s"%&gt; &lt;img src="image.do" id="img1"/&gt; &lt;a src='image.do?'&gt;换一张试试看&lt;/a&gt; type="submit" value="注 册" onclick="return validate();" /&gt;

    企业人力资源管理项目SSH+EXT+MySQL+MD5

    在web.xml的display-name标签与welcome-file-list标签中加入一下代码 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* org.springframework.web.context....

    java面试题

    2:继承:子类继承父类,子类可以拥有父类中已定义的方法,并且子类可以修改父类中的方法使其更适合特殊需求。 3:多台:不同对象对统一消息作出不同响应称之为多态 4:抽象:忽略与当前主题无关的那些方面,将...

    千方百计笔试题大全

    145、&lt;%@include file="abc.jsp"%&gt;与&lt;jsp:include page="abc.jsp"/&gt;之间的差别? 36 146、JSP的缺点? 36 148、如何实现JSP的国际化? 36 150、如何在JSP中包括绝对路径文件? 使用URLConnection即可。 37 151、在...

    java面试宝典

    145、&lt;%@include file="abc.jsp"%&gt;与&lt;jsp:include page="abc.jsp"/&gt;之间的差别? 36 146、JSP的缺点? 36 148、如何实现JSP的国际化? 36 150、如何在JSP中包括绝对路径文件? 使用URLConnection即可。 37 151、在...

    java 面试题 总结

    动态INCLUDE用jsp:include动作实现 &lt;jsp:include page="included.jsp" flush="true" /&gt;它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件的...

    超级有影响力霸气的Java面试题大全文档

     动态INCLUDE用jsp:include动作实现 &lt;jsp:include page="included.jsp" flush="true" /&gt;它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件...

    java面试题以及技巧

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题目与技巧1

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧4

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧3

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题以及技巧6

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

Global site tag (gtag.js) - Google Analytics