采用JQuery和Ftp方式上传下载,现在上传已经没有问题,但是下载的时候,可以正常返回,但是返回的只是文件的内容,而不是弹出一个对话框进行保存。请各位大侠帮忙指导下。
function downloadFile(sn_id){
alert('下载'+sn_id);
var sendurl ='"+req.getContextPath()+"/file.do?operate=downLoadFromFtp&sn='+sn_id;
$.ajax({ 
url:sendurl, 
type:'GET', 
error:function(data){ 
alert('失败'); 
}, ");
success:function(data){
alert('下载成功123'); 
$('#attlist').html(data); 
// slideDialog($('#fileRetMsg').val()); 
data.execCommand('SaveAs') 
       } 
});  
}
JS没问题,可能粘过来少点东西
resp.setContentType("text/html");
javax.servlet.ServletOutputStream out = resp.getOutputStream();
// 读取文件流

//java.io.FileInputStream fileInputStream = is.;
// 下载文件
// 设置响应头和下载保存的文件名
if (is != null) {
resp.setContentType("APPLICATION/OCTET-STREAM; charset=gbk");
resp.setHeader("Content-Disposition", "inline;filename=\"" + new String(atta.getOriginal_name().getBytes("gbk"),"iso8859-1")+"\"");
int filelen = is.available();
//文件太大时内存不能一次读出,要循环
byte a[] = new byte[1024];
while(is.read(a)!=-1){
out.write(a);
}
}
is.close();
out.close();

解决方案 »

  1.   

    虽然我不懂java,但是有些问题应该是相通的...("Content-Disposition", "attachment;filename=${filename}"attachment --- 作为附件下载
    inline --- 在线打开试试看吧,我是.net的...没法测试你的java代码,但是协议,不会错.
      

  2.   

    从网上copy来一句:
    Content-disposition是MIME协议的扩展,由于多方面的安全性考虑没有被标准化,所以可能某些浏览器不支持,比如说IE4.01