web问题求高手,jsp+servlet实现文件下载 jsp+servlet实现文件下载,在jsp中点击,通过servlet判断读取文件,实现文件的下载jspwebservlet 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2楼我也要个 [email protected] HttpServletResponse response = ServletActionContext.getResponse(); PrintWriter out; try { StringBuilder sb = cb.getCsv(); String csvName = cb.getCsvName(); // String csvName = "MG-" + enterid + "-" + cb.getTime() + ".csv"; response.setContentType("application/csv; charset=GB2312"); response.setHeader("Content-Disposition", "inline; filename=\"" + new String(csvName.getBytes("UTF-8"), "ISO8859-1") + "\""); out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "GB2312")); out.print(sb); out.flush(); out.close();这样基本就差不多了。。当然,response.getOutputStream()这个要注意,直接获取的是jsp的输出流,建议不要直接用out的,而且是out下的write //JSP文件<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>//为防止下载时文件名乱码统一用utf-8<h1>文件共享下载</h1><table><tr><td>aa.png</td><td><a href='MyJsp.jsp/loadServet?filename=aa.png'>点击下载</a></td>tr><tr><td>aa.mp3</td><td><a href='MyJsp.jsp/loadServet?filename=aa.mp3'>点击下载</a></td></tr><tr><td>cc.rmvb</td><td><a href='MyJsp.jsp/loadServet?filename=cc.rmvb'>点击下载</a></td></tr></table>//Servlert文件response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//演示下载String filename=request.getParameter("filename");//获取要下载的文件名String name=new String(filename.getBytes("iso-8859-1"),"utf-8");//String name=java.net.URLDecoder.decode(name0, "utf-8");response.setHeader("Content-Disposition", "attachment;filename="+name);//先读取该图片,再将数据发给浏览器//获取要下载文件的全路径(我所有文件放在WebRoot/res/)String path=this.getServletContext().getRealPath("/res/"+name);//创建输入文件流FileInputStream fis=new FileInputStream(path);//创建一个缓冲字节数组byte []buff=new byte[1024];int len=0;//表示实际每次读取多少个字节OutputStream os=response.getOutputStream();while((len=fis.read(buff))>0){os.write(buff, 0, len);}//关闭资源fis.close(); 都没有我想要的答案。各位写的代码都是直接把文件放在了jsp也的<a>中,我要的是jsp页的文件名是从数据库中读出的,数据库中已经存有了文件的路径,在jsp页从数据库中获取路径,然后通过servlet判断进行下载。。 我也十分的想要啊 [email protected] 大家发下各标签用法的代码吗 关于对象绑定在范围对象和在jsp页面显示的问题 在线等,一个查找mysql数据的问题,请大哥大姐给解答一下 一个全国运行的系统,户登陆模块的代码怎样写比较合理!!! 如何将校验码以图片形式显示? js 非空验证 text 应用服务器和web服务器的联系和区别 Apache与tomcat是什么关系? 请问如何将页面中一个text文本框中显示的数字格式为金额的形式? tomcat+IIS的灵异现象...... 关于log4j2.xml的异步日志性能疑问 用java导入execel或者access文件到oracle数据库,并显示到jsp页面 jsp中设置tabindex
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out;
try { StringBuilder sb = cb.getCsv(); String csvName = cb.getCsvName(); // String csvName = "MG-" + enterid + "-" + cb.getTime() + ".csv";
response.setContentType("application/csv; charset=GB2312");
response.setHeader("Content-Disposition", "inline; filename=\""
+ new String(csvName.getBytes("UTF-8"), "ISO8859-1") + "\""); out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "GB2312")); out.print(sb); out.flush();
out.close();
这样基本就差不多了。。
当然,response.getOutputStream()
这个要注意,直接获取的是jsp的输出流,建议不要直接用out的,而且是out下的write
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
//为防止下载时文件名乱码统一用utf-8
<h1>文件共享下载</h1>
<table>
<tr><td>aa.png</td><td><a href='MyJsp.jsp/loadServet?filename=aa.png'>点击下载</a></td>tr>
<tr><td>aa.mp3</td><td><a href='MyJsp.jsp/loadServet?filename=aa.mp3'>点击下载</a></td></tr>
<tr><td>cc.rmvb</td><td><a href='MyJsp.jsp/loadServet?filename=cc.rmvb'>点击下载</a></td></tr>
</table>
//Servlert文件
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//演示下载
String filename=request.getParameter("filename");//获取要下载的文件名
String name=new String(filename.getBytes("iso-8859-1"),"utf-8");//String name=java.net.URLDecoder.decode(name0, "utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+name);
//先读取该图片,再将数据发给浏览器
//获取要下载文件的全路径(我所有文件放在WebRoot/res/)
String path=this.getServletContext().getRealPath("/res/"+name);
//创建输入文件流
FileInputStream fis=new FileInputStream(path);
//创建一个缓冲字节数组
byte []buff=new byte[1024];
int len=0;//表示实际每次读取多少个字节
OutputStream os=response.getOutputStream();
while((len=fis.read(buff))>0){
os.write(buff, 0, len);
}
//关闭资源
fis.close();