我用servlet写了个文件下载 前台用的是jquery ajax调用 但是它的回调函数是把servlet响应的内容得到了
怎么让这个内容被浏览器解析下载啊各位老大请帮个忙publicvoiddownLoad(StringfilePath,HttpServletResponseresponse...
怎么让这个内容被浏览器解析下载啊 各位老大请帮个忙
public void downLoad(String filePath, HttpServletResponse response,
) throws Exception
{
File f = new File(filePath);
if (!f.exists())
{
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(f.getName().getBytes("GBK"), "ISO8859-1"));
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
{
out.write(buf, 0, len);
}
br.close();
out.flush();
out.close();
} 展开
public void downLoad(String filePath, HttpServletResponse response,
) throws Exception
{
File f = new File(filePath);
if (!f.exists())
{
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(f.getName().getBytes("GBK"), "ISO8859-1"));
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
{
out.write(buf, 0, len);
}
br.close();
out.flush();
out.close();
} 展开
3个回答
展开全部
在ajax的回调函数里,用类似这样的代码:
alert(ajax.responseText);
或者:
var show = document.createElement('div');
show.innerHTML = ajax.responseText;
document.body.appendChild(show);
这样就把内容显示到页面中了。
如果是把ajax的东西下载到本地:
如果是给特定用户使用的,可以考虑用IE的new ActiveObject函数调用本地的自动化控件。如果是给一般的浏览器用,是无法写入到本地的。基本上上你要浏览器下载东西,要么是a标签一类的,要么是你更改location,这个是要刷新页面的。
总之你ajax得到的东西,没有通用的方法可以保存成本地文件,最多借助一些RIA的东西。
alert(ajax.responseText);
或者:
var show = document.createElement('div');
show.innerHTML = ajax.responseText;
document.body.appendChild(show);
这样就把内容显示到页面中了。
如果是把ajax的东西下载到本地:
如果是给特定用户使用的,可以考虑用IE的new ActiveObject函数调用本地的自动化控件。如果是给一般的浏览器用,是无法写入到本地的。基本上上你要浏览器下载东西,要么是a标签一类的,要么是你更改location,这个是要刷新页面的。
总之你ajax得到的东西,没有通用的方法可以保存成本地文件,最多借助一些RIA的东西。
2011-12-28
展开全部
1、既然是文件下载就不要用Ajax请求,最好用JS直接打开地址的方法来响应JS事件。
2、其次你的Servlet代码里面要设置正确的ContentType和Content-Disposition的attachment header。
2、其次你的Servlet代码里面要设置正确的ContentType和Content-Disposition的attachment header。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是你servlet的响应有问题 你把代码贴上来
追问
我直接用去请求servlet就可以 就是不知道ajax怎么实现下载
追答
用ajax把请求发送出去 发送到下载对应的那个servlet就行了
你不会写ajax吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询