zoukankan      html  css  js  c++  java
  • Struts2上传下载

     

    struts2 实现文件上传和下载

    标签: struts2upload上传下载
     分类:
     

    目录(?)[+]

     

    项目目录:

    web.xml:主要是配好struts2

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.     xmlns="http://java.sun.com/xml/ns/javaee"  
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
    5.     id="WebApp_ID" version="3.0">  
    6.     <display-name>uploadTest</display-name>  
    7.   
    8.     <!-- struts2配置 -->  
    9.     <filter>  
    10.         <filter-name>struts2</filter-name>  
    11.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    12.     </filter>  
    13.     <filter-mapping>  
    14.         <filter-name>struts2</filter-name>  
    15.         <url-pattern>/*</url-pattern>  
    16.     </filter-mapping>  
    17.   
    18.     <welcome-file-list>  
    19.         <welcome-file>index.jsp</welcome-file>  
    20.     </welcome-file-list>  
    21.   
    22. </web-app>  

    struts.xml:配好上传下载的两个action。 

    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
    5.   
    6. <struts>  
    7.   
    8.     <constant name="struts.devMode" value="true" />  
    9.   
    10.     <package name="default" namespace="/" extends="struts-default">  
    11.           
    12.         <!-- 上传 -->  
    13.         <action name="uploadAction" class="upload.UploadAction">  
    14.             <result>index.jsp</result>  
    15.             <result name="input">index.jsp</result>  
    16.   
    17.             <interceptor-ref name="fileUpload">  
    18.                 <!-- 不写下面两个参数为允许所有大小所有类型的文件的上传 -->  
    19.                 <param name="maximumSize">1024000</param>   
    20.                 <param name="allowedTypes">  
    21.                     application/msword,image/jpeg  
    22.                 </param>  
    23.             </interceptor-ref>  
    24.             <interceptor-ref name="defaultStack" />  
    25.   
    26.         </action>  
    27.           
    28.         <!-- 下载 -->  
    29.         <action name="downloadAction" class="upload.DownloadAction">  
    30.             <result type="stream">  
    31.                 <!-- 文件类型 —— application/octet-stream 表示无限制 -->  
    32.                 <param name="contentType">application/octet-stream</param>  
    33.                 <!-- 流对象名 —— 去找Action中的getInputStream方法 -->  
    34.                 <param name="inputName">inputStream</param>  
    35.                 <!-- 文件名 —— 将调用该Action中的getFileName方法 -->  
    36.                 <param name="contentDisposition">attachment;filename="${fileName}"</param>  
    37.                 <param name="bufferSize">4096</param>  
    38.             </result>  
    39.         </action>  
    40.     </package>  
    41.   
    42. </struts>  

    UploadAction.java

    [java] view plain copy
     
    1. package upload;  
    2.   
    3. import java.io.File;  
    4. import java.io.FileInputStream;  
    5. import java.io.FileOutputStream;  
    6. import java.io.InputStream;  
    7. import java.io.OutputStream;  
    8.   
    9. import com.opensymphony.xwork2.ActionSupport;  
    10.   
    11. public class UploadAction extends ActionSupport {  
    12.     private static final long serialVersionUID = 1L;  
    13.   
    14.     private File myFile;//上传的文件,对应表单的file的name属性  
    15.     private String myFileContentType;//文件类型,xxxContentType,xxx对应表单file的name属性  
    16.     private String myFileFileName;  
    17.   
    18.     @Override  
    19.     public String execute() throws Exception {  
    20.         if (myFile == null) {  
    21.             this.addFieldError("file", "文件不能为空,请选择");  
    22.             return INPUT;  
    23.         } else {  
    24.             InputStream is = new FileInputStream(this.getMyFile());  
    25.             OutputStream os = new FileOutputStream(new File("F:/", this.getMyFileFileName()));  
    26.             byte[] buf = new byte[1024];  
    27.             int length = 0;  
    28.             while ((length = is.read(buf)) > 0) {  
    29.                 os.write(buf, 0, length);  
    30.             }  
    31.             is.close();  
    32.             os.close();  
    33.         }  
    34.         return SUCCESS;  
    35.     }  
    36.   
    37.     public File getMyFile() {  
    38.         return myFile;  
    39.     }  
    40.   
    41.     public void setMyFile(File myFile) {  
    42.         this.myFile = myFile;  
    43.     }  
    44.   
    45.     public String getMyFileContentType() {  
    46.         return myFileContentType;  
    47.     }  
    48.   
    49.     public void setMyFileContentType(String myFileContentType) {  
    50.         this.myFileContentType = myFileContentType;  
    51.     }  
    52.   
    53.     public String getMyFileFileName() {  
    54.         return myFileFileName;  
    55.     }  
    56.   
    57.     public void setMyFileFileName(String myFileFileName) {  
    58.         this.myFileFileName = myFileFileName;  
    59.     }  
    60.   
    61. }  

    DownloadAction.java

    [java] view plain copy
     
    1. package upload;  
    2.   
    3. import java.io.InputStream;  
    4.   
    5. import org.apache.struts2.ServletActionContext;  
    6.   
    7. import com.opensymphony.xwork2.ActionSupport;  
    8.   
    9. public class DownloadAction extends ActionSupport {  
    10.     private static final long serialVersionUID = 1L;  
    11.       
    12.     private String fileName;//要下载的文件名  
    13.     private InputStream inputStream;  
    14.   
    15.     @Override  
    16.     public String execute() throws Exception {  
    17.         inputStream = ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);  
    18.         return SUCCESS;  
    19.     }  
    20.   
    21.     public String getFileName() {  
    22.         return fileName;  
    23.     }  
    24.   
    25.     public void setFileName(String fileName) {  
    26.         this.fileName = fileName;  
    27.     }  
    28.   
    29.     public InputStream getInputStream() {  
    30.         return inputStream;  
    31.     }  
    32.   
    33.     public void setInputStream(InputStream inputStream) {  
    34.         this.inputStream = inputStream;  
    35.     }  
    36. }  

    index.jsp:访问:

    [html] view plain copy
     
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <%@ taglib uri="/struts-tags" prefix="s" %>  
    4.   
    5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    6. <html>  
    7. <head>  
    8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    9. <title>Insert title here</title>  
    10. </head>  
    11. <body>  
    12.   
    13.     <!-- 上传 -->  
    14.     <s:form action="uploadAction" enctype="multipart/form-data" method="post">  
    15.         <s:file name="myFile"></s:file>  
    16.         <s:submit />  
    17.     </s:form>  
    18.       
    19.     <!-- 下载 -->  
    20.     <href="downloadAction?fileName=index.jsp">下载index.jsp文件</a>  
    21.       
    22. </body>  
    23. </html>  

    参考博客:http://www.blogjava.net/thisliy/archive/2009/08/14/291153.html

  • 相关阅读:
    【转】JavaScript ArrayBuffer浅析
    【转】JS中的Blob对象
    javascript BLOB 图片预览
    生活小技巧:Excel中PMT函数的使用
    小知识:TFA收集日志报错空间不足
    idea 新手入坑操作指南
    【转】Error type 3 类型错误,Error: Activity class {} does not exist.Error while Launching activity解决方法
    C#批量修改文件后缀名
    零基础入门Unity
    UE4户外森林场景全流程教学
  • 原文地址:https://www.cnblogs.com/shenqz/p/6962428.html
Copyright © 2011-2022 走看看