做过的大侠请支招,JS打开文件另存为窗口如何实现

倒霉熊 2011-04-18 08:47:22
我见网上大部分都是
document.execCommand("SaveAs");

这个方法,这个方法是保存当前网页的。



我现在做的是将页面数据导出PDF,由用户来选择所生成的PDF文件保存路径。就像是WinFowm里面的另存为一样。
其实我只是需要它返回给我一个路径,好让我知道用户要把生成的PDF文件保存在哪个文件夹里面。语文学的不好,描述不清楚请见谅。
...全文
412 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chollaflower 2011-04-18
  • 打赏
  • 举报
回复
导出pdf这类功能是后台语言实现的,js无能为力了。你只需用js请求一个后台接口(实现下载pdf功能),剩下的就是浏览器的事情了,至于你所说的选择目录的问题,貌似现代浏览器都带有了下载管理器,一般指定一个目录后就自动下载到这个目录中了,根本不让你再选择了(如果你选择了不再显示选择路径的那个对话框)。
lodachi 2011-04-18
  • 打赏
  • 举报
回复
	String serverName = request.getServerName();
String realPath = request.getRealPath(serverName);// 取得互联网程序的绝对地址
realPath = realPath.substring(0, realPath.lastIndexOf("\\"));
String filepath = realPath + "\\downloads\\" ;// 创建文件的保存目录
String filename = request.getAttribute("xlsFileName") + "";
File file = null;
FileInputStream fin = null;
ServletOutputStream op = null;
try {
file = new File(filepath + filename);
if (!file.exists() || !file.isFile()) {
System.out.println(filename + "is not existed ");
return;
}
response.reset();
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment; filename=" + filename);
fin = new FileInputStream(file);
op = response.getOutputStream();

File f = new File(filepath);
if (f.isDirectory()) {
for (int i = 0; i < f.listFiles().length; i++) {
File ftmp = f.listFiles()[i];
ftmp.delete();
}
}
int len;
byte[] buf = new byte[1024];
while ((len = fin.read(buf)) != -1) {
op.write(buf, 0, len);
}
op.flush();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if (op != null) {
op.close();
op = null;
}
if (fin != null) {
fin.close();
fin = null;
}
}

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧