/**
* 文件上传
* @return
*/
private File schedule;
private String scheduleFileName;
private String scheduleContentType;
@InputConfig(resultName="uploadInput")
public String upload(){
//将文件保存到硬盘中 位置Tomact .....WEB-INF/upload/
String parentDir = ServletActionContext.getServletContext().getRealPath("WEB-INF/upload");
//生成一个时间子目录
String dir = MyStringUtils.TimeChildPath(parentDir);
//生成一个随机文件名
String fileName = MyStringUtils.getUUID()+"_"+scheduleFileName;
//文件上传
schedule.renameTo(new File(parentDir+File.separator+dir,scheduleFileName));
//信息更新
this.getModel().setUploadTime(new Date());
this.getModel().setUploadFilename(fileName);
this.getModel().setUploadPath(dir);
this.getClassesService().updateUpload(this.getModel());
return "upload";
}
/**
* 文件下载
* @return
*/
private InputStream inputStream;
private String oldName;
public String download() throws Exception{
//1.获取用户信息
CrmClasses findClasses = this.getClassesService().findById(this.getModel().getClassId());
//2.得到下载路径
String filePath =
ServletActionContext.getServletContext().getRealPath("WEB-INF/upload");
oldName = findClasses.getUploadFilename().substring(findClasses.getUploadFilename().indexOf("_")+1);
//给字节输入流赋值
/*System.out.println(filePath);
System.out.println(findClasses.getUploadPath());
System.out.println(findClasses.getUploadFilename());*/
inputStream =
new FileInputStream(filePath+File.separator
+findClasses.getUploadPath()+File.separator
+oldName);
System.out.println(oldName);
return "download";
}
xml配置文件
<!--上传成功 -->
<result name="upload" type="redirectAction">classesAction_findAll</result>
<!--上传不成功 -->
<result name="uploadInput">/WEB-INF/pages/error.jsp</result>
<!--文件下载 -->
<result name="download" type="stream">
<!-- 给stream类型注入参数,
1。流的信息,
2.告知浏览器下载的打开方式 attachment;filename=${} 固定格式
必须配置该文件
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
3.告知浏览器响应正文的MIME类型 -->
<param name="inputName">inputStream</param>
<param name="contentDisposition">
attachment;filename=${@java.net.URLEncoder@encode(oldName,"UTF-8")}
</param>
<param name="contentType">application/octet-stream</param>
</result>
前端代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/sys.css" type="text/css"/>
<title>班级管理</title>
</head>
<body>
<!--距离页面顶端5px-->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="topg"></td>
</tr>
</table>
<s:form name="createForm" namespace="/" action="">
<table border="0" cellspacing="0" cellpadding="0" class="wukuang">
<tr>
<td width="1%"><img src="${pageContext.request.contextPath}/images/tleft.gif"/></td>
<td width="20%" align="left">[班级管理]</td>
<td width="42%"align="center"> </td>
<td width="36%"align="right">
<%--添加班级 /html/classesm/addClass.jsp--%>
<s:a namespace="/" action="#">
<img src="${pageContext.request.contextPath}/images/button/tianjia.gif" class="img"/>
</s:a>
<%--高级查询
<a href="queryClass.html"><img src="${pageContext.request.contextPath}/images/button/gaojichaxun.gif" class="img"/></a>
--%>
</td>
<td width="1%"><img src="${pageContext.request.contextPath}/images/tright.gif"/></td>
</tr>
</table>
</s:form>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="topg"></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td ><img src="${pageContext.request.contextPath}/images/result.gif"/></td>
</tr>
</table>
<table width="97%" border="1">
<thead>
<tr class="henglan" style="font-weight:bold;">
<th width="150px" align="center">班级名称</th>
<th width="200px" align="center">所属课程</th>
<th width="80px" align="center">开班时间</th>
<th width="80px" align="center">毕业时间</th>
<th width="80px" align="center">状态</th>
<th width="70px" align="center">学生总数</th>
<th width="70px" align="center">升学数</th>
<th width="70px" align="center">转班数</th>
<th width="50px" align="center">编辑</th>
<th width="50px" align="center">查看</th>
<th align="center">课表</th>
</tr>
</thead>
<tbody>
<s:iterator value="#pageBean.data" var="v">
<tr class="tabtd2">
<td align="center"><s:property value="#v.name"/> </td>
<td align="center"><s:property value="#v.courseType.courseName"/> </td>
<td align="center"><s:date name="beginTime" format="yyyy-MM-dd"/></td>
<td align="center"><s:date name="endTime" format="yyyy-MM-dd"/></td>
<td align="center"><s:property value="#v.status"/></td>
<td align="center"><s:property value="#v.totalCount"/> </td>
<td align="center"><s:property value="#v.upgradeCount"/> </td>
<td align="center"><s:property value="#v.changeCount"/> </td>
<td align="center">
<s:a namespace="/" action="classesAction_saveOruplaodUI">
<s:param name="classId" value="#v.classId"/>
<img src="${pageContext.request.contextPath}/images/button/modify.gif" class="img"/>
</s:a>
</td>
<td align="center">
<s:a namespace="/" action="classesAction_showClass">
<s:param name="classId" value="#v.classId"/>
<img src="${pageContext.request.contextPath}/images/button/modify.gif" class="img"/>
</s:a>
</td>
<td align="center" title="上次上传时间:2015-04-02">
<s:a namespace="/" action="classesAction_uploadUI">
<s:param name="classId" value="#v.classId"/>
上传
</s:a>
<s:a namespace="/" action="classesAction_download">
<s:param name="classId" value="#v.classId"/>
下载
</s:a>
</td>
</tr>
</s:iterator>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td align="center">
<span>第<s:property value="#pageBean.pageNum"/>/<s:property value="#pageBean.totalPage"/>页</span>
<span>
<s:if test="#pageBean.pageNum >1">
<s:a action="classesAction_showPage" namespace="/">
<s:param name="pageNum" value="1"/>
[首页]
</s:a>
<s:a action="classesAction_showPage" namespace="/">
<s:param name="pageNum" value="#pageBean.pageNum-1"/>
[上一页]
</s:a>
</s:if>
<s:if test="#pageBean.pageNum<#pageBean.totalPage">
<s:iterator begin="#pageBean.start" end="#pageBean.end" var="n">
<s:a action="classesAction_showPage" namespace="/">
<s:param name="pageNum" value="#n"/>
[<s:property value="#n"/>]
</s:a>
</s:iterator>
<s:a action="classesAction_showPage" namespace="/">
<s:param name="pageNum" value="#pageBean.pageNum+1"/>
[下一页]
</s:a>
<s:a action="classesAction_showPage" namespace="/">
<s:param name="pageNum" value="#pageBean.totalPage"/>
[尾页]
</s:a>
</s:if>
</span>
</td>
</tr>
</table>
</body>
</html>