struts2上传文件后如何令这些上传的文件在页面显示,并供别人下载? struts文件上传页面显示下载 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 文件肯定上传到一个文件夹里面在,在跳到Table这个页面之前,去把文件夹里面的文件扫一遍,全部显示在表格里面就行了呗 下载非常简单,假定你为用户提供的下载页面是个JSP,管理员上传的文件肯定被你保存在服务器的某个路径下了,那么下载界面可以先在action层遍历那个路径下有哪些文件,再展示其路径就OK 实现web文件下载应该和struts没关系。其实现有下面两种1,就是你说的那种超链接的方式,超链接的地址就是要下载文件的位置。例如<a href="../download/soplus.apk" >下载</a>这种方式很不好,因为会暴露你的地址,带来很多不安全的因素2, 页面下载第一步 页面下载超链接例如<a href="../download/down.jsp?docname=soplus.apk" >下载</a>第二部 下载页面 主要代码 <%@page language="java" contentType="application/x-msdownload" pageEncoding="UTF-8"%> <% String docname = request.getParameter("docname"); String filedisplay = ""; response.setContentType("application/x-download"); String paths = pageContext.getServletContext().getRealPath("/"); String realPath = paths + "/download/"; String filedownload = realPath + docname; filedisplay = URLEncoder.encode(filedisplay, "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + filedisplay); //此处记得清理下。在释放在jsp中使用的对象时,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的! out.clear(); out = pageContext.pushBody(); OutputStream outp = null; FileInputStream in = null; try { outp = response.getOutputStream(); in = new FileInputStream(filedownload); byte[] b = new byte[1024]; int i = 0; while ((i = in.read(b)) > 0) { outp.write(b, 0, i); } outp.flush(); } catch (Exception e) { System.out.println("Download Error!"); e.printStackTrace(); } finally { if (in != null) { in.close(); in = null; } if (outp != null) { outp.close(); outp = null; } } %> 可以这样做:1 肯定有个上传文件的表,你每次上传一个文件,就吧这个文件的id,文件名以及存储路径存入表里面,其他需要的属性根据需求增加,2 table中战士的就是这个表里面的数据,可以在文件名称上面加上超链接或增加点击事件3 点击文件名称实现下载,根据文件名以及路径实现下载即可...... 举个例子<a href="www.av.com/av/苍井空.avi">苍井空.avi</a>href里面写上你文件的全路径就OK了!浏览器自动下载的 额 看了下你的问题 好像我开始大概扫一遍没看全你直接在显示那个下载页面的时候把文件集合拿出来给个list循环在table里面显示啊有什么问题吗 spring注入问题 菜鸟 关于并发性问题 高分急问:aix下weblogic.apache.xerces解析异常 Weblogic应用服务器java进程占用CPU97%导致系统访问太慢,谁知道咋回事 求Resin扩大java内存的配置方式 hibernate的SessionFactory使用问题 关于JXL里判断是否跨几行的问题 急需了解开源工作流项目 谁有表单生成器的JAVA原代码,小弟高分送上? 如果我牺牲了,JAVA是凶手! 大大们 一个strusts2的小异常 有点困惑 无耻的来问了 jsp 里按钮onclick=" "调用函数不成功,调用的ajax函数
1,就是你说的那种超链接的方式,超链接的地址就是要下载文件的位置。
例如<a href="../download/soplus.apk" >下载</a>
这种方式很不好,因为会暴露你的地址,带来很多不安全的因素
2, 页面下载
第一步 页面下载超链接
例如<a href="../download/down.jsp?docname=soplus.apk" >下载</a>
第二部 下载页面 主要代码
<%@page language="java" contentType="application/x-msdownload" pageEncoding="UTF-8"%>
<%
String docname = request.getParameter("docname"); String filedisplay = "";
response.setContentType("application/x-download");
String paths = pageContext.getServletContext().getRealPath("/");
String realPath = paths + "/download/";
String filedownload = realPath + docname; filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + filedisplay); //此处记得清理下。在释放在jsp中使用的对象时,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的!
out.clear();
out = pageContext.pushBody(); OutputStream outp = null;
FileInputStream in = null;
try
{
outp = response.getOutputStream();
in = new FileInputStream(filedownload); byte[] b = new byte[1024];
int i = 0; while ((i = in.read(b)) > 0)
{
outp.write(b, 0, i);
}
outp.flush();
}
catch (Exception e)
{
System.out.println("Download Error!");
e.printStackTrace();
}
finally
{
if (in != null)
{
in.close();
in = null;
}
if (outp != null)
{
outp.close();
outp = null;
}
}
%>
3 点击文件名称实现下载,根据文件名以及路径实现下载即可......
浏览器自动下载的
你直接在显示那个下载页面的时候把文件集合拿出来
给个list循环在table里面显示啊
有什么问题吗