ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码

问题描述

ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码

前台:
$.ajax({
type:"POST",
url:"app/downloadProduct",
data:{nid:nid,name:name},
dataType:"text",
success:function(data){
console.log(data);
if(data!=null){
alert("url="+data);
window.location.href = data;
}else{
alert("资源获取失败!");
}
}
});
后台:
public static void downloadExportFileByResponse(String downloadFile, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("--------downloadFile---------"+downloadFile);
if(downloadFile==null||"".equals(downloadFile))
{
throw new Exception("文件名为空,下载文件失败!");
}
try {
byte[] buffer = new byte[256];
InputStream is = new FileInputStream(downloadFile);

        try {
            downloadFile = downloadFile.substring(downloadFile.lastIndexOf(File.separator) + 1);
            downloadFile = URLEncoder.encode(downloadFile, "UTF-8");
        } catch(Exception e) {
            e.printStackTrace();
        }
        File filename = new File(downloadFile);
        //response.setContentType("text/plain");
        response.addHeader("content-type","application/x-msdownload");//浏览器自己辨别文件类型
        response.addHeader("Content-Disposition", "attachment; filename=" + filename.getName());
        response.addHeader("Content-Length", String.valueOf(is.available()));

        int nRead = 0;
        while((nRead = is.read(buffer)) > 0)
            response.getOutputStream().write(buffer, 0, nRead);

        is.close();

解决方案

 $.ajax({
type:"POST",
url:"app/downloadProduct",
data:{nid:nid,name:name},
dataType:"text",
success:function(data){
console.log(data);
if(data!=null){
alert("url="+data);
window.location.href = data;
}else{
alert("资源获取失败!");
}
}
});

为什么不直接改成:

window.open("app/downloadProduct","_blank");

解决方案二:

没人回答?补充问题:前台界面用href=“”的方式是能下载的,现在不想用href的方法,只用ajax请求后台action处理。求指教。。

解决方案三:

如果是ajax提交方式,前台是不会弹出框的

时间: 2024-11-01 23:16:13

ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码的相关文章

Android实现下载zip压缩文件并解压的方法(附源码)

前言 其实在网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,所以这篇文章在此记录一下下载zip文件并直接解压的方法,直接上代码,文末有源码下载. 下载: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream

php简单创建zip压缩文件的方法_php技巧

本文实例讲述了php简单创建zip压缩文件的方法.分享给大家供大家参考,具体如下: /* creates a compressed zip file */ function create_zip($files = array(),$destination = '',$overwrite = false) { //if the zip file already exists and overwrite is false, return false if(file_exists($destinati

不同的机器压缩后的ZIP压缩文件上传后,有的存在中文乱码,求帮忙分析分析。

问题描述 不同的机器压缩后的ZIP压缩文件上传后,有的存在中文乱码,求帮忙分析分析. 用了commons-compress-1.8.jar下的ZipArchiveInputStream 进行的压缩包解压处理,在不同机器上对同样文件进行压缩生成zip压缩包,有的机器生成的压缩包上传后中文就乱码,有的就不是乱码,求帮忙分析分析. 解决方案 7zip 压缩文件 分析

php-通过网页下载的压缩文件,显示压缩文件格式未知或数据损坏,但服务器上的文件是好的,是网页的问题吗?

问题描述 通过网页下载的压缩文件,显示压缩文件格式未知或数据损坏,但服务器上的文件是好的,是网页的问题吗? 通过网页下载的压缩文件,显示压缩文件格式未知或数据损坏,但服务器上的文件是好的,是网页的问题吗? 没有考虑网页访问量的问题,是不是这个原因呢?要怎么解决? 可是同一台电脑.有时候下载正常,有时候就出现如题问题,反复下载都不行.所以怀疑是不是网页代码有问题.PS:网页下载文件那部分代码和我的工作有关 解决方案 不是,是你电脑没有处理压缩文件的程序 解决方案二: 可能是下载过程丢包了,你可以查

解压-java读取zip压缩文件里面二级文件夹目录内的文件的问题

问题描述 java读取zip压缩文件里面二级文件夹目录内的文件的问题 我想在不解压的条件下得到一个压缩文件夹内部的二级目录下的文件流,但是搜了好久也没找到 代码如下 import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; impo

如何从zip压缩文件中直接提取文件到内存缓冲区

问题描述 如何从zip压缩文件中直接提取文件到内存缓冲区 目前我正在做一个程序模块,需要从zip压缩文件中提取出某个文件到内存buffer.我尝试用zlib来提取,但是失败了.用好压打开那个压缩文件显示压缩算法是Store. 补充:后来我用zlib来提取一个压缩算法是deflate的zip压缩文件提取成功了.现在面临的问题是Store压缩算法的zip文件怎么提取呢? 解决方案 看来是zlib不支持算法

代码-从服务器上下载的压缩文件,通过流的方式怎么读取文件中的内容。

问题描述 从服务器上下载的压缩文件,通过流的方式怎么读取文件中的内容. 如何用java代码实现压缩文件的读取? 例如从银行服务器上下载对账文件后,为了不在本地保存文件. 压缩文件中的文件格式是俩个文本文件,怎么用流的方式读取到压缩文件中的文件内容. 解决方案 ZipEntry http://daoshud1.iteye.com/blog/2012362 解决方案二: http://www.cnblogs.com/kgdxpr/archive/2013/05/20/3088254.html 解决方

pb 压缩 多个文件-pb中如何将一个文件夹和一个文件压缩到一个zip压缩文件中

问题描述 pb中如何将一个文件夹和一个文件压缩到一个zip压缩文件中 在pb中如何将一个文件夹和一个文件压缩到一个zip压缩文件中,不要rar的,求高手 解决方案 可以用zlib来实现,参考以下链接 http://download.csdn.net/detail/distancehalf/3032693 或者调用winzip的命令行,通过run命令来实现

Python读写zip压缩文件

Python自带模块zipfile可以完成zip压缩文件的读写,而且使用非常方便,下面我们就来演示一下Python读写zip文件. Python读zip文件 下面的代码给出了用Python读取zip文件,打印出压缩文件里面所有的文件,并读取压缩文件中的第一个文件. import zipfile z = zipfile.ZipFile("zipfile.zip", "r") #打印zip文件中的文件列表 for filename in z.namelist( ): p