js下载文件,判断文件是否返回

  下载之前用的window.location.href下载的,但是这个判别不了文件是否返回,小文件倒还好,大的文件长时间没有下载也没有加载条什么的,用户有时会点击下载好几下,大的数据很容易将服务拖垮,所以决定改良下,参考网上大神的,大概思路是:用ifram标签下载,追加到文档,下载完成移除,前端带一个时间戳的cookie,后台接收,下载完成之后返回,前端一个定时循环的函数去验证是不是返回了时间戳,如果是确认下载成功

  前端代码:

  

$("#mylink").click(function () {
                var iframe=document.createElement("iframe");
                //指定iframe的路径
                iframe.src= dss.rootPath + "plugin/sjwfx/NineAddressNoLeisUreExport";
                $(iframe).css("display","none");
                //开始“数据正在加载”的进度条,提示用户在导出数据
                dss.alert("正在为您导出数据,请稍后片刻");
                dss.load(true);
                //追加元素到文档
                document.body.appendChild(iframe);
                //每隔一秒循环下里面代码,如果是我返回的值,关闭加载
                var interval = setInterval(function(){
                    //获取返回的cookie
                    var down = dss.cookie.get("resultId");
                    if(down=="75941785"){
                        //隐藏“数据正在加载”的进度条
                        dss.load(false);
                        $(iframe).remove();
                        //关闭循环的时间函数
                        clearInterval(interval);
                    }
                },1000);

            });

后台添加这么几行代码:

     Cookie cookie=new Cookie("resultId","75941785");//将时间戳设置到cookie中
        cookie.setPath("/");//可能会出现前端js读取不到,所以设置下
        cookie.setMaxAge(10);//设置cookie生存时间,可调小一点
        response.addCookie(cookie);//添加cookie

我前端没有带上时间戳,因为iframe的关系,我这是iframe嵌在iframe里面的,后台一直读取不到我带的cookie,百度了很多没有很好的解决办法,所以我是直接在后台带上值,前端识别,我是设置了cookie时间为十秒就失效,注意:后台如果配置文件配置了http-only,前端js是不能读取操作的,还有就是setPath不是必须带的,如果前端读取不到,试着带下,或者指定你的项目名。

原文地址:https://www.cnblogs.com/grasslucky/p/10945209.html

时间: 2024-08-01 15:43:54

js下载文件,判断文件是否返回的相关文章

判断文件是否存在,不存在创建文件&&判断文件夹是否存在,不存在创建文件夹

1.判断文件是否存在,不存在创建文件 [java] view plaincopyprint? File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if(!file.exists()) { try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();

C#取得控制台应用程序的根目录方法 判断文件夹是否存在,不存在就创建

取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集  取得WinForm应用程序的根目录方法1:Environment.CurrentDirectory.ToString();//获取或设置当前工作目录的完全限定路径2:Application.StartupPath.ToString();//

C#判断文件和文件夹是否存在 不存在则创建

using System.IO;string path = @"D:\accountDaoRu\";        if (Directory.Exists(path) == false)        {            Directory.CreateDirectory(path);        } if (Directory.Exists(Server.MapPath(~/upimg/hufu)) == false)//如果不存在就创建file文件夹{ Directory

Asp.Net判断文件是否存在

在上传文件时经常要判断文件夹是否存在,如果存在就上传文件,否则新建文件夹再上传文件 判断语句为 if (System.IO.Directory.Exists(Server.MapPath("file")) == false)//如果不存在就创建file文件夹 { System.IO.Directory.CreateDirectory(Server.MapPath("file")); } System.IO.Directory.Delete(Server.MapPat

C# 判断文件和文件夹是否存在并创建

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.Ht

C# 判断文件夹存在与否并创建文件夹

protected void Button1_Click(object sender, EventArgs e) { if (Directory.Exists(Server.MapPath("~/upimg/hufu")) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(Server.MapPath("~/upimg/hufu")); } //Directory.Delete(Server.MapPath

C#判断文件及文件夹是否存在并创建(C#判断文件夹存在)

protected void Button1_Click(object sender, EventArgs e) { if (Directory.Exists(Server.MapPath("~/upimg/hufu")) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(Server.MapPath("~/upimg/hufu")); } //Directory.Delete(Server.MapPath

C# 判断文件夹与文件是否存在

//在上传文件时经常要判断文件夹是否存在,如果存在就上传文件,否则新建文件夹再上传文件 判断语句为 if (System.IO.Directory.Exists(Server.MapPath("file")) == false)//如果不存在就创建file文件夹 { System.IO.Directory.CreateDirectory(Server.MapPath("file")); } System.IO.Directory.Delete(Server.MapP

JSP-超大文件上传-如何上传文件-大文件上传

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小限制,post没有) 2.表单的enctype属性:必须设置为multipart/form-data. 3.表单必须有文件上传项:file,且文件项需要给定name值 上传文件夹需要增加一个属性webkitdirectory,像这样: <input id="fileFolder" n

js 下载文件 修改文件名

用js下载文件,使用<a>标签,添加download属性即可. var a = document.createElement("a"); a.href = "http://XXX.com/audioStream/8a9dbae9d0859e48fc1f590fcf6d4ccc.mp3": a.download ="test.mp3"; a.click(); 但是如果想给文件重新命名,貌似js无法实现. 因此考虑后台实现,用java代理