日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

struts实战--文件下载

發布時間:2025/3/20 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts实战--文件下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

struts實現文件下載

一、頁面

這個頁面的里面的簡歷資料就是我們的下載入口。

<%@ page language="java" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s"%> <HTML><HEAD><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><LINK href="${pageContext.request.contextPath}/css/Style.css" type="text/css" rel="stylesheet"><script language="javascript" src="${pageContext.request.contextPath}/js/public.js"></script></HEAD><body><form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/user/userAction_save.do" method="post" enctype="multipart/form-data"><table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0"><tr><td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"height="26"><strong><STRONG>查看用戶</STRONG></strong></td></tr><tr><td width="18%" align="center" bgColor="#f5fafe" class="ta_01">登錄名: <s:debug /></td><td class="ta_01" bgColor="#ffffff"><s:property value="model.logonName"/></td><td align="center" bgColor="#f5fafe" class="ta_01">用戶姓名:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.userName"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">性別:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.sex"/></td><td align="center" bgColor="#f5fafe" class="ta_01">學歷:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.education"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">出生日期:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.birthday"/></td><td align="center" bgColor="#f5fafe" class="ta_01">電話:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.telephone"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">興趣愛好:</td><td class="ta_01" bgColor="#ffffff" colSpan="3"><s:property value="model.interest"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">簡歷資料:</td><td class="ta_01" bgColor="#ffffff" colSpan="3"><s:a action="user_download" namespace="/" cssClass="cl_01"><s:param name="userID" value="model.userID"></s:param><s:property value="model.filename"/></s:a></td></tr><TR><TD class="ta_01" align="center" bgColor="#f5fafe">備注:</TD><TD class="ta_01" bgColor="#ffffff" colSpan="3"><s:property value="model.remark"/></TD></TR><TR><td align="center" colSpan="4" class="sep1"><img src="${pageContext.request.contextPath}/images/shim.gif"></td></TR><TR><td class="ta_01" style="WIDTH: 100%" align="right" bgColor="#f5fafe" colSpan="4"><FONT face="宋體">???????</FONT><INPUT class="button_ok" type="button" οnclick="history.go(-1)" value="返回"/><span id="Label1"></span></td></TR></table></form></body> </HTML>

二、action類

下載的時候,我們需要下載的文件輸入流,MIME類型和文件名。

1、根據用戶id查詢到用戶。

2、根據用戶獲取到文件輸入流。

3、根據用戶獲取文件名。

4、在下載的時候可能會出現名稱亂碼,所以我們需要用encodeDownloadFilename方法解決。

/*** 下載簡歷 (struts2 下載 一個流、 兩個頭信息)* * @return*/public String download() {UserService userService = new UserService();user = userService.findById(user.getUserID());return "downloadSUCCESS";}// 返回文件流public InputStream getInputStream() throws IOException {if (user == null || user.getPath() == null) {return null;}File file = new File(ServletActionContext.getServletContext().getRealPath(user.getPath()));return new FileInputStream(file);}// 返回簡歷 MIME類型public String getContentType() {if (user == null || user.getFilename() == null) {return null;}return ServletActionContext.getServletContext().getMimeType(user.getFilename());}// 返回編碼后的文件名public String getDownloadFilename() throws IOException {if (user == null || user.getFilename() == null) {return null;}return encodeDownloadFilename(user.getFilename(), ServletActionContext.getRequest().getHeader("user-agent"));}/*** 下載文件時,針對不同瀏覽器,進行附件名的編碼* * @param filename* 下載文件名* @param agent* 客戶端瀏覽器* @return 編碼后的下載附件名* @throws IOException*/public String encodeDownloadFilename(String filename, String agent)throws IOException {if (agent.contains("Firefox")) { // 火狐瀏覽器filename = "=?UTF-8?B?"+ new BASE64Encoder().encode(filename.getBytes("utf-8"))+ "?=";} else { // IE及其他瀏覽器filename = URLEncoder.encode(filename, "utf-8");}return filename;}
三、struts.xml文件配置

<result name="downloadSUCCESS" type="stream"><!-- 下載流 getInputStream --><param name="contentType">${contentType}</param><param name="contentDisposition">attachment;filename=${downloadFilename}</param></result>
就此,我們就實現了文件下載的功能。

總結

以上是生活随笔為你收集整理的struts实战--文件下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。