JSP怎样弹出文件下载保存框,救急 我想当我点击保存按钮时,会弹出保存对话框,然后选择保存地址,请问高手们,这样该如何实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ page language="java" import="java.io.*"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><% InputStream stream; String tempfilepath = "c:/temp.xls"; try { stream = new FileInputStream(tempfilepath); OutputStream os = null; response.setContentType("APPLICATION/DOWNLOAD"); response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("temp.xls", "UTF-8")); response.setContentLength(stream.available()); os = response.getOutputStream(); int iBytesRead = 0; byte[] buffer = new byte[10240000]; while ((iBytesRead = stream.read(buffer, 0, 10240000)) != -1) { os.write(buffer, 0, iBytesRead); } os.close(); stream.close(); response.flushBuffer(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } File f = new File(tempfilepath); if (f.exists()) { f.delete(); }%><body></body></html> 当你点击保存按钮的时候,让页面跳转到这个JSP的路径就可以了 <a>标签中的url填上文件地址就可以 <% response.setContentType(fileminitype); response.setHeader("Location",filename); response.setHeader("Cache-Control", "max-age=" + cacheTime);//filename应该是编码后的(utf-8) response.setHeader("Content-Disposition", "attachment; filename=" + filename); response.setContentLength(filelength); OutputStream outputStream = response.getOutputStream(); InputStream inputStream = new FileInputStream(filepath); byte[] buffer = new byte[1024]; int i = -1; while ((i = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, i); } outputStream.flush(); outputStream.close(); inputStream.close(); outputStream = null; %> 感谢king_spf 给的参考,结贴了 king_spf :另外我还想问一下,这样怎么取到下载后的文件地址呢,就是取选择存放文件的地址?这样能取到吗?怎么取? king_spf :另外我还想问一下,这样怎么取到下载后的文件地址呢,就是取选择存放文件的地址?这样能取到吗?怎么取?---------------------------------------------------------------------------------------------------取这个地址有用吗? session.invalidate()无效 关于一个采购申请的界面设计问题 门面表有10万条数据,请问下面的这种需求如何解决才可以以最快速度知道结果? 急招jsp/servlet开发人员(北京) 我需要用jsp编写网页,请问应该给机子上安装什么工具? 准备转jsp了,各位大侠有新手教程吗?谢谢 这是怎么回事? 调试一个留言板程序出现的错误??? 分页问题? JSP中,从一个select选择一个选项后,如何自动根据这个选项从数据库中搜索相应记录构造另一个select! 急。。怎么自动设置临时JAVA环境变量!在线等。 怎么在href中提交数据?
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" import="java.io.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<%
InputStream stream;
String tempfilepath = "c:/temp.xls";
try {
stream = new FileInputStream(tempfilepath);
OutputStream os = null;
response.setContentType("APPLICATION/DOWNLOAD");
response.setHeader("Content-Disposition",
"attachment; filename="
+ java.net.URLEncoder.encode("temp.xls",
"UTF-8"));
response.setContentLength(stream.available());
os = response.getOutputStream();
int iBytesRead = 0;
byte[] buffer = new byte[10240000];
while ((iBytesRead = stream.read(buffer, 0, 10240000)) != -1) {
os.write(buffer, 0, iBytesRead);
}
os.close();
stream.close();
response.flushBuffer();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File f = new File(tempfilepath);
if (f.exists()) {
f.delete();
}
%>
<body>
</body>
</html>
<%
response.setContentType(fileminitype);
response.setHeader("Location",filename);
response.setHeader("Cache-Control", "max-age=" + cacheTime);//filename应该是编码后的(utf-8)
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
response.setContentLength(filelength);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
%>
---------------------------------------------------------------------------------------------------
取这个地址有用吗?