打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
struts2的文件上传和下载

 

         文件上传和下载在很多web开发中用到,现在,我就将我整理的利用strut2实现文件上传和下载的功能与大家共享一下,希望有用。

        1、文件上传:

          1)action中代码:

 

Java代码  
  1. package com.xxyd.web.action;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.apache.commons.io.FileUtils;  
  6. import org.apache.struts2.ServletActionContext;  
  7.   
  8. import com.opensymphony.xwork2.ActionSupport;  
  9.   
  10. /** 
  11.  * 处理文件上传的Action 
  12.  * @author dove 
  13.  */  
  14. public class UploadAction  extends ActionSupport {  
  15.     /** 代表上传的文件内容的对象 */  
  16.     private File upload;  
  17.       
  18.     /** Struts2约定的代表上传的文件的名 */  
  19.     private String uploadFileName;  
  20.     /** Struts2约定的代表上传文件的内容类型(MIME) */  
  21.     private String uploadContentType;  
  22.       
  23.     public String execute() throws Exception{  
  24.         System.out.println("文件的名:" + uploadFileName);  
  25.         System.out.println("不要用upload.getName()来获取文件名,这个是临时名:" + upload.getName());  
  26.         System.out.println("文件的内容类型:" + uploadContentType);  
  27.           
  28.         //////////使用IO流来操作upload属性  
  29.         //File destPath = new File("d:/"); //服务端存放文件的目录  
  30.           
  31.         //如果要存放到web服务器中本项目的某个目录下  
  32.         //根据服务器的文件保存地址和原文件名创建目录文件全路径  
  33.         String destPath = ServletActionContext.getServletContext().getRealPath("/uploads");  
  34.           
  35.         File dest = new File(destPath, uploadFileName); //服务器的文件  
  36.           
  37.         FileUtils.copyFile(upload, dest);//完成了文件的拷贝工作  
  38.           
  39.         return "succ";  
  40.     }  
  41.       
  42.     public String getSummery() {  
  43.         return summery;  
  44.     }  
  45.     public void setSummery(String summery) {  
  46.         this.summery = summery;  
  47.     }  
  48.     public File getUpload() {  
  49.         return upload;  
  50.     }  
  51.     public void setUpload(File upload) {  
  52.         this.upload = upload;  
  53.     }  
  54.     public String getUploadFileName() {  
  55.         return uploadFileName;  
  56.     }  
  57.     public void setUploadFileName(String uploadFileName) {  
  58.         this.uploadFileName = uploadFileName;  
  59.     }  
  60.     public String getUploadContentType() {  
  61.         return uploadContentType;  
  62.     }  
  63.     public void setUploadContentType(String uploadContentType) {  
  64.         this.uploadContentType = uploadContentType;  
  65.     }  
  66. }  

 

          2)struts.xml中的配置

Java代码  
  1. <action name="upload" class="com.xxyd.web.action.UploadAction">  
  2.             <!-- 可以更改fileUpload拦截器的属性值来限定上传文件的内容类型,上传文件的大小 -->  
  3.             <interceptor-ref name="defaultStack">  
  4.          <param name="fileUpload.allowedTypes">image/png,image/gif,image/jpeg,image/jpg,image/x-png, image/pjpeg</param>  
  5.          <param name="fileUpload.maximumSize">102400</param>   
  6.         </interceptor-ref>              
  7.             <result name="succ">/succ.jsp</result>  
  8.             <result name="input">/index.jsp</result>  
  9.         </action>  

            3)html代码:

Html代码  
  1. <html>  
  2.   <head>  
  3.     <title>Struts2文件上传示例</title>  
  4.   </head>  
  5.     
  6.   <body>  
  7.     <h3>Struts2文件上传示例</h3><hr/>  
  8.     <s:fielderror/>  
  9.     <form action="upload.action" method="post" enctype="multipart/form-data"><!-- 此处必须为multipart/form-data,而且必须使用post方法 -->  
  10.         <table border="1" width="500">  
  11.             <tr>  
  12.                 <td>选择文件</td>  
  13.                 <td><input type="file" name="upload" /></td>  
  14.             </tr>  
  15.             <tr>  
  16.                 <td colspan="2" align="center"><input type="submit" value='提交' /></td>  
  17.             </tr>  
  18.         </table>  
  19.     </form>  
  20.   </body>  
  21. </html>  

           此时,便可以实现文件上传了。

       

        2、文件下载:

          1)action中代码:

Java代码  
  1. package com.xxyd.web.action;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.InputStream;  
  7. import java.io.UnsupportedEncodingException;  
  8.   
  9. import org.apache.struts2.ServletActionContext;  
  10.   
  11. /** 
  12.  * 处理文件下载的Action类 
  13.  * @author dove 
  14.  */  
  15. public class DownLoadAction {  
  16.     private String basePath = ServletActionContext.getServletContext().getRealPath("/uploads");  
  17.     private String fileName;  
  18.       
  19.       
  20.     public String execute(){  
  21.         return "succ";  
  22.     }  
  23.       
  24.     public InputStream getInputStream() throws FileNotFoundException{  
  25.         return new FileInputStream(new File(basePath, fileName));  
  26.     }  
  27.   
  28.     public String getFileName() throws UnsupportedEncodingException {  
  29.         return new String(fileName.getBytes(), "ISO-8859-1");  
  30.     }  
  31.   
  32.     public void setFileName(String fileName) {  
  33.         this.fileName = fileName;  
  34.     }  
  35. }  

           2)struts.xml中的配置:

Java代码  
  1. <!-- 文件下载 -->  
  2.         <action name="download" class="com.xxyd.web.action.DownLoadAction">  
  3.             <result name="succ" type="stream">  
  4.                 <param name="contentType">application/octet-stream;charset=ISO8859-1</param>  
  5.                 <param name="inputName">inputStream</param>  
  6.                 <param name="contentDisposition">attachment;filename=${fileName}</param>  
  7.                 <param name="bufferSize">8192</param>  
  8.             </result>  
  9.         </action>  

           3)html页面代码:

Html代码  
  1. <html>  
  2.   <head>  
  3.     <title>Struts2文件下载功能实例</title>  
  4.   </head>  
  5.     
  6.   <body>      
  7.     <a href="download.action?fileName=sunset.jpg">下载sunset.jpg</a><br/>  
  8.   </body>  
  9. </html>  

          此时,便可以实现文件的下载功能了。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
struts2.0上传下载
CKEditor图片上传实现详细步骤(使用Struts 2)
Struts2多文件下载
struts2 文件下载示例1_普通下载
在Struts 2中实现文件上传
struts2多文件动态下载及中文解决方案(此文测试过,没错)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服