点击一个连接如(下载)实现文件的下载,要求点击连接后弹出一个下载保存框,那么如何实现弹出保存对话框呢,又如何将文件名和保存的文件路径传到Action里呢。
保存文件夹对话框是浏览器实现的功能,服务器端没法知道和控制保存的路径。
只要你是链接,用户点击下载,就会出现保存对话框,不同的浏览器有各自的实现。
如果你想控制客户端文件系统,除非在客户端安装软件。
保存文件夹对话框是浏览器实现的功能,服务器端没法知道和控制保存的路径。
只要你是链接,用户点击下载,就会出现保存对话框,不同的浏览器有各自的实现。
如果你想控制客户端文件系统,除非在客户端安装软件。
不是客户端发送请求,服务端就往客户端写数据吗,能说下原理吗,不会搞啊。
参考:http://blog.csdn.net/feichexia/article/details/7105741
重点: response.setHeader("Content-disposition", "attachment;filename="
你在链接里面把这个附件的主键传递进去,到action中通过这个主键查询附件信息然后返回附件信息就行了
代码:
String filename = file.getName();
HttpServletResponse response=this.getResponse();
response.addHeader("Content-Disposition", "attachment;filename="
+ URLEncoder.encode(filename, "UTF-8"));
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/zip;charset=utf-8");
InputStream in = new FileInputStream(file);
byte[] buf=new byte[1024];
ServletOutputStream out=response.getOutputStream();
int len=0;
while((len=in.read(buf))!=-1){
out.write(buf, 0, len);
}
in.close();
out.flush();
out.close();
直接访问这个方法路径就会弹出下载了。
如果是ajax方式请求,可通过JS调用方法路径:document.location.href=downloadUrl;//浏览器弹出下载,downloadUrl为上面的方法访问路径。
断点续传的话客户端就需要写插件或者写个客户端的程序了。网页是没办法的。
看HTML5是否支持。