日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能

發(fā)布時(shí)間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?????? --------------------------------------------------單附件上傳:----------------------------------------------------------------

Action類:

package com.yourcompany.struts.uponloadfile;
import java.io.BufferedInputStream;
?import java.io.BufferedOutputStream;
?import java.io.File;
?import java.io.FileInputStream;
?import java.io.FileOutputStream;
?import java.io.InputStream;
?import java.io.OutputStream;
?import java.util.Date;

?import org.apache.struts2.ServletActionContext;

?import com.opensymphony.xwork2.ActionSupport;

?public class FileUploadAction extends ActionSupport? {
???? private static final long serialVersionUID = 572146812454l ;
???? private static final int BUFFER_SIZE = 16 * 1024 ;
???
???? private File myFile;
???? private String contentType;
???? private String fileName;
???? private String imageFileName;
???? private String caption;
???
???? public void setMyFileContentType(String contentType)? {
???????? this .contentType = contentType;
??? }
???? //還有myFileContentType(上傳文件的MIME類型)和myFileFileName(上傳文件的文件名,該文件名不包括文件的路徑)。因此,<s:file name="xxx" />
???? //對應(yīng)Action類里面的xxx、xxxContentType和xxxFileName三個(gè)屬性。
???? public void setMyFileFileName(String fileName)? {
???????? this .fileName = fileName;
??? }
???????
???? public void setMyFile(File myFile)? {
???????? this .myFile = myFile;
??? }
???
???? public String getImageFileName()? {
???????? return imageFileName;
??? }
???
???? public String getCaption()? {
???????? return caption;
??? }
?
????? public void setCaption(String caption)? {
???????? this .caption = caption;
??? }
???
???? private static void copy(File src, File dst)? {
???????? try? {
??????????? InputStream in = null ;
??????????? OutputStream out = null ;
???????????? try? {???
????????????? //輸入到緩沖流
??????????????? in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
??????????????? out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
???????????????? byte [] buffer = new byte [BUFFER_SIZE];
???????????????? while (in.read(buffer) > 0 )? {
??????????????????? out.write(buffer);
??????????????? }
???????????? } finally? {
???????????????? if ( null != in)? {
??????????????????? in.close();
??????????????? }
????????????????? if ( null != out)? {
??????????????????? out.close();
??????????????? }
??????????? }
???????? } catch (Exception e)? {
??????????? e.printStackTrace();
??????? }
??? }
???
???? private static String getExtention(String fileName)? {
???????? int pos = fileName.lastIndexOf( "." );
???????? return fileName.substring(pos+1);//獲得后綴名
??? }
?
??? @Override
???? public String execute()????? {???????
??????? imageFileName = new Date().getTime() + getExtention(fileName);//合成圖片的名稱
??????? System.out.println("================="+imageFileName+"========="+ServletActionContext.getServletContext().getRealPath("WebRoot/UploadImages" ));
??????? File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/UploadImages") + "/" +imageFileName);
??????? copy(myFile, imageFile);
???????? return SUCCESS;
??? }
}

struts.xml配置:

<action name ="fileUpload" class ="com.yourcompany.struts.uponloadfile.FileUploadAction" >
???????????
????????????? <interceptor-ref name ="fileUpload" >
??????????????? <param name ="allowedTypes" >
?????????????????? image/bmp,image/png,image/gif,image/jpeg
??????????????? </param >
??????????? </interceptor-ref >?
??????????? <!-- <interceptor-ref name="timer"/>? 用于測試action的執(zhí)行時(shí)間 -->
?????????
??????????? <interceptor-ref name ="defaultStack" />???
??????????? <result name="input">/uploadfile_index.jsp</result >
??????????? <result name="success">/uploadfile_result.jsp </result >
??????? </action >

uploadfile_index.jsp:

jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>?
<%@ taglib uri="/struts-tags" prefix="s" %>


<%??
String path = request.getContextPath();??
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??
%>?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">?
<html>?
? <head>?
??? <base href="<%=basePath%>">?
??????
??? <title>uploadfile_index.jsp</title>?
??????
??? <meta http-equiv="pragma" content="no-cache">?
??? <meta http-equiv="cache-control" content="no-cache">?
??? <meta http-equiv="exires" content="0">??????
??? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">?
??? <meta http-equiv="description" content="This is my page">?
??? <!--?
??? <link rel="stylesheet" type="text/css" href="styles.css">?
??? -->?
?
? </head>?
????
? <body>?
??? 選擇上傳文件:類型是圖片
? <s:fielderror />
??? <s:form action ="fileUpload" method ="POST" enctype ="multipart/form-data" >
??????? <s:file name ="myFile"?? label ="Image File" />
??????? <s:textfield name ="caption" label ="Caption" />???????
??????? <s:submit />
??? </s:form >
?
? </body>?
</html>

uploadfile_result.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>?
<%@ taglib uri="/struts-tags" prefix="s" %>


<%??
String path = request.getContextPath();??
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??
%>?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">?
<html>?
? <head>?
??? <base href="<%=basePath%>">?
??????
??? <title>uploadfile_result.jsp</title>?
??????
??? <meta http-equiv="pragma" content="no-cache">?
??? <meta http-equiv="cache-control" content="no-cache">?
??? <meta http-equiv="expires" content="0">??????
??? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">?
??? <meta http-equiv="description" content="This is my page">?
??? <!--?
??? <link rel="stylesheet" type="text/css" href="styles.css">?
??? -->?
?
? </head>?
????
? <body>?
? <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >
??????? <img src ='UploadImages/<s:property value ="imageFileName" /> ' />
??????? <br />
??????? <s:property value ="caption" />
??? </div >


? </body>?
</html>

--------------------------------------------------多附件上傳:----------------------------------------------------------------

Action類:

package com.yourcompany.struts.uponloadfile;
import java.io.BufferedInputStream;
?import java.io.BufferedOutputStream;
?import java.io.File;
?import java.io.FileInputStream;
?import java.io.FileOutputStream;
?import java.io.InputStream;
?import java.io.OutputStream;
import java.util.ArrayList;
?import java.util.Date;
import java.util.List;

?import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

?public class maxFileUploadAction extends ActionSupport? {
???? private static final long serialVersionUID = 572146812454l ;
???? private static final int BUFFER_SIZE = 16 * 1024 ;
???
???? private File[] uploads;
???? private String[] uploadFileNames;
???? private String[] uploadContentTypes;

???? public File[] getUpload()? { return this .uploads; }
????? public void setUpload(File[] uploads)? { this .uploads = uploads; }
?
????? public String[] getUploadFileName()? { return this .uploadFileNames; }
????? public void setUploadFileName(String[] uploadFileName)? { this .uploadFileNames = uploadFileName; }
?
????? public String[] getUploadContentType()? { return this .uploadContentTypes; }
????? public void setUploadContentType(String[] uploadContentType)? { this .uploadContentTypes = uploadContentType;
????? }
???? private static void copy(File src, File dst)? {
???????? try? {
??????????? InputStream in = null ;
??????????? OutputStream out = null ;
???????????? try? {???
????????????? //輸入到緩沖流
??????????????? in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
??????????????? out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
???????????????? byte [] buffer = new byte [BUFFER_SIZE];
???????????????? while (in.read(buffer) > 0 )? {
??????????????????? out.write(buffer);
??????????????? }
???????????? } finally? {
???????????????? if ( null != in)? {
??????????????????? in.close();
??????????????? }
????????????????? if ( null != out)? {
??????????????????? out.close();
??????????????? }
??????????? }
???????? } catch (Exception e)? {
??????????? e.printStackTrace();
??????? }
??? }
???
???? private static String getExtention(String fileName)? {
???????? int pos = fileName.lastIndexOf( "." );
???????? return fileName.substring(pos+1);//獲得后綴名
??? }
?
??? @Override
???? public String execute(){????
???? for(int i=0;i<3;i++){
?????? String imageFileName = new Date().getTime() +getExtention(uploadFileNames[i]);//合成圖片的名稱
??????? System.out.println("================="+imageFileName+"========="+ServletActionContext.getServletContext().getRealPath("WebRoot/UploadImages" ));
??????? File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/UploadImages") + "/" +imageFileName);
??????? copy(uploads[i], imageFile);
???? }????
???????? return SUCCESS;
??? }
}

struts.xml配置:

<action name ="maxfileUpload" class ="com.yourcompany.struts.uponloadfile.maxFileUploadAction" >
?<interceptor-ref name ="fileUpload" />
?<!--? <interceptor-ref name ="fileUploadStack" />? -->
? <interceptor-ref name ="defaultStack" />
?<result name="success">/uploadfile_maxresult.jsp </result >???
??????? </action >

jsp:

uploadfile_maxindex.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>?
<%@ taglib uri="/struts-tags" prefix="s" %>


<%??
String path = request.getContextPath();??
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??
%>?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">?
<html>?
? <head>?
??? <base href="<%=basePath%>">?
??????
??? <title>uploadfile_maxindex.jsp</title>?
??????
??? <meta http-equiv="pragma" content="no-cache">?
??? <meta http-equiv="cache-control" content="no-cache">?
??? <meta http-equiv="exires" content="0">??????
??? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">?
??? <meta http-equiv="description" content="This is my page">?
??? <!--?
??? <link rel="stylesheet" type="text/css" href="styles.css">?
??? -->?
?
? </head>?
????
? <body>?
? 選擇上傳文件:不限類型
? <s:form action ="maxfileUpload" method ="POST" enctype ="multipart/form-data" >
??? <s:file label ="File (1)" name ="upload" />
??? <s:file label ="File (2)" name ="upload" />
??? <s:file label ="File (3)" name ="upload" />
??? <s:submit />
</s:form >
?
? </body>?
</html>

uploadfile_maxresult.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>?
<%@ taglib uri="/struts-tags" prefix="s" %>


<%??
String path = request.getContextPath();??
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??
%>?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">?
<html>?
? <head>?
??? <base href="<%=basePath%>">?
??????
??? <title>uploadfile_maxresult.jsp</title>?
??????
??? <meta http-equiv="pragma" content="no-cache">?
??? <meta http-equiv="cache-control" content="no-cache">?
??? <meta http-equiv="exires" content="0">??????
??? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">?
??? <meta http-equiv="description" content="This is my page">?
??? <!--?
??? <link rel="stylesheet" type="text/css" href="styles.css">?
??? -->?
?
? </head>?
????
? <body>?
?<h4>上傳成功</h4>
?
? </body>?
</html>

--------------------------------------------------附件下載:----------------------------------------------------------------

Action類:

package com.yourcompany.struts.filedown;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class Filedown implements Action {

private String fileName;// 初始的通過param指定的文件名屬性

private String inputPath;// 指定要被下載的文件路徑


public InputStream getInputStream() throws Exception {

// 通過 ServletContext,也就是application 來讀取數(shù)據(jù)

return ServletActionContext.getServletContext().getResourceAsStream(inputPath);

}

public String execute() throws Exception {

return SUCCESS;

}

public void setInputPath(String value) {

inputPath = value;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

/** 提供轉(zhuǎn)換編碼后的供下載用的文件名 */

public String getDownloadFileName() {

String downFileName = fileName;

try {

downFileName = new String(downFileName.getBytes(), "ISO8859-1");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return downFileName;

}

}

struts.xml配置:


<!-- 下載現(xiàn)有文件 -->
<action name="download3" class="com.yourcompany.struts.filedown.Filedown">
<param name="inputPath">/download/系統(tǒng)說明.doc</param>
<!-- 初始文件名 -->
<!-- 可以載頁面?zhèn)魅?-->
<!-- <param name="fileName">系統(tǒng)說明.doc</param> -->
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
<param name="inputName">inputStream</param>
<!-- 使用經(jīng)過轉(zhuǎn)碼的文件名作為下載文件名,downloadFileName屬性
對應(yīng)action類中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>

JSP:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
??? <title>filedown.jsp</title>
??
</head>
<body>???

<a href=" <s:url value="download3.action"> <s:param name="fileName">系統(tǒng)說明.doc</s:param> </s:url>">download</a>

</body>
</html>

?

?

總結(jié)

以上是生活随笔為你收集整理的Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。