实验_Struts2文件的上传,下载
来源:互联网 发布:php表单提交 编辑:程序博客网 时间:2024/06/04 22:48
1.实验名称
Struts2文件的上传,下载
2.实验目的
熟练Struts中文件的上传和下载功能。
3.实验内容
将文件上传和文件下载功能连起来,即上传后的文件以一个可下载列表显示出来,想下载什么点击鼠标就可以下载。
4.文件描述:
uploadFile.jsp:上传页。在form表单中包含了一个文本框(上传用户的姓名)和三个文件上传选项。
showFile.jsp:下载页(上传成功的跳转页),可显示文件名、上传者以及上传时间,并对上传的文件设置了超链接,供下载使用。
DocUploadAction.java:采用数组方式实现多文件上传。
DocDownloadAction.java:实现文件下载相关的方法。
struts.xml:分别配置了上传和下载的Action(DocUploadAction和DocDownloadAction)。在文件上传时,做了一些简单的过滤。
5.实验源代码
- uploadFile.jsp
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>多文件上传</title></head><body><center><s:form action="docUpload" method="post" enctype="multipart/form-data"> <s:textfield name="name" label="姓名" size="20"/> <s:file name="upload" label="选择文档" size="20"/> <s:file name="upload" label="选择文档" size="20"/> <s:file name="upload" label="选择文档" size="20"/> <s:submit value="确认上传" align="center"/></s:form></center></body>
- showFile.jsp
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>显示上传文档</title></head><body><center> <font style="font-size:18px;color:red">上传者:<s:property value="name"/></font> <table width="45%" cellpadding="0" cellspacing="0" border="1"> <tr><th>文件名称</th> <th>上传者</th> <th>上传时间</th></tr> <s:iterator value="uploadFileName" status="st" var="doc"> <tr><td align="center"> <a href="docDownload.action?downPath=upload/<s:property value="#doc"/>"> <s:property value="#doc"/> </a> </td> <td align="center"><s:property value="name"/></td> <td align="center"><s:date name="createTime" format="yyyy-MM-dd HH:mm:ss"/></td> </tr> </s:iterator> </table></center></body>
- DocUploadAction.java
public class DocUploadAction extends ActionSupport { private String name; private File[] upload; private String[] uploadContentType; private String[] uploadFileName; private String savePath; private Date createTime; public String getName() { return name; } public void setName(String name) { this.name = name; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public Date getCreateTime(){ createTime=new Date(); return createTime; } public static void copy(File source,File target){ InputStream inputStream=null; OutputStream outputStream=null; try{ inputStream=new BufferedInputStream(new FileInputStream(source)); outputStream=new BufferedOutputStream(new FileOutputStream(target)); byte[] buffer=new byte[1024]; int length=0; while((length=inputStream.read(buffer))>0){ outputStream.write(buffer, 0, length); } }catch(Exception e){ e.printStackTrace(); }finally{ if(null!=inputStream){ try { inputStream.close(); } catch (IOException e2) { e2.printStackTrace(); } } if(null!=outputStream){ try{ outputStream.close(); }catch(Exception e2){ e2.printStackTrace(); } } } } @Override public String execute() throws Exception { for(int i=0;i<upload.length;i++){ String path=ServletActionContext.getServletContext().getRealPath(this.getSavePath())+"\\"+this.uploadFileName[i]; File target=new File(path); copy(this.upload[i],target); } return SUCCESS; } }
- DocDownloadAction.java
public class DocDownloadAction extends ActionSupport { private String downPath; public InputStream getInputStream() throws Exception{ return ServletActionContext.getServletContext().getResourceAsStream(downPath); } public String getDownPath(){ return downPath; } public void setDownPath(String downPath){ this.downPath=downPath; } public String getDownloadFileName(){ String downFileName=downPath.substring(7); try{ downFileName=new String(downFileName.getBytes(),"utf-8"); }catch(Exception e){ e.printStackTrace(); } return downFileName; } @Override public String execute() throws Exception { return SUCCESS; } }
- struts.xml
<struts> <constant name="struts.i18n.encoding" value="utf-8"/> <package name="default" extends="struts-default"> <action name="docUpload" class="nuc.sw.action.DocUploadAction"> <interceptor-ref name="fileUpload"> <param name="maximumSize">50000</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> <param name="savePath">/upload</param> <result>/showFile.jsp</result> <result name="input">/uploadFile.jsp</result> </action> <action name="docDownload" class="nuc.sw.action.DocDownloadAction"> <result type="stream"> <param name="contentType"> application/msword,text/plain </param> <param name="inputName">inputStream</param> <param name="contentDisposition"> attachment;filename="${downloadFileName}" </param> <param name="bufferSize">40960</param> </result> </action> </package></struts>
实验截图:
文件上传:
文件下载:
阅读全文
0 0
- 实验_Struts2文件的上传,下载
- Java_JavaEE_轻量_Struts2文件上传闲谈;
- Java_JavaEE_轻量级(SSH)_Struts2文件下载支持;
- 下载上传的文件
- 文件的上传、下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传与下载
- 文件的上传与下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 实现文件的下载上传
- .文件的上传和下载:
- 文件的上传和下载
- ora-02082
- Bootstrap(四十四)
- 欢迎使用CSDN-markdown编辑器
- 使用FluentNHibernate_NHibernate操作数据库
- 《程序员的成长课》:增加收入的 3 大方向
- 实验_Struts2文件的上传,下载
- org.hibernate.type.IntegerType.next NullPointerException
- tensorflow seq2seq代码学习
- C:单链表反转(循环)
- Java数据类型和MySql数据类型对应表
- python_requests_pgyer
- 自己的记录
- 2017.12.15
- Two Sum