var myParent = parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent;
FileDown = function (fileName, realFileName) {
    $(myParent.document.body).find("#down-file-iframe").remove();
    var $iframe = $('<iframe name="_down-file-iframe" id="down-file-iframe" style="position:absolute;top:-10000px;left:-10000px;"></iframe>');
    var $a = $('<a href="' + fileName + '">下载</a>');
    if (realFileName != null)
    { $a.attr("download", realFileName); }

    $(myParent.document.body).append($iframe);

    $iframe[0].onload = $iframe[0].onreadystatechange = function () {
        var titleElem = $(this.contentWindow.document).find("title");
        if (titleElem.length > 0) {
            if (titleElem.text().indexOf("404") >= 0)
            { myDialog({ title: "提示", content: "文件下载失败:<br/>" + "该文件不存在或已被删除" }); }
            else
            { myDialog({ title: "提示", content: "文件下载失败:<br/>" + titleElem.text() }); }

        }
    }

    var DataExport_Timer = setInterval(function () {
        var iframeObj = myParent.window.frames["down-file-iframe"].contentWindow || myParent.window.frames["down-file-iframe"];

        if ($(iframeObj.document.body).length <= 0) { return; }

        clearInterval(DataExport_Timer);
        $(iframeObj.document.body).append($a);
        $a[0].click();
        setTimeout(function () { $iframe.remove(); }, 1000 * 120);
    }, 200);
}

  如果是弹出框形式的话,把此方法放在父窗体的页面,实现下载文件

调用

//遍历下载多个文件
            for (var i = 0; i <= ids.length; i++) {
                $.ajax({
                    url: '/Apply/DownloadScanFile',
                    cache: false,
                    async: false,
                    type: 'post',
                    data: { id: ids[i] },
                    success: function (data) {
                        //CloseDialog();
                        if (data.Status == 1) {
                            FileDown(data.FullFileName, data.FileName);
                        } else {
                            myDialog({ title: "提示", content: data.Error });
                        };
                    }
                });

            }

  控制器

 /// <summary>
        /// 下载回复文件
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public JsonResult DownloadFile(int id)
        {

            var model = Db.GetApplyResultFile(id);
            return Json(new { Status = 1, FullFileName = "\\" + model.FilePath, FileName = model.FileName });
        }

  

mvc 在弹出框中实现文件下载的更多相关文章

  1. 苹果手机iOS11中fixed弹出框中input光标错位问题

    最近遇到了一个移动前端的BUG:手机弹出框中的输入框focus时光标可能会错位. 刚开始时我完全不知道错误原因是什么,在电脑上调试时完全没有问题,手机上出现问题时也没有找到规律.后来在网上搜索了大量的 ...

  2. 在IOS11中position:fixed弹出框中的input出现光标错位的问题

    问题出现的背景: 在IOS11中position:fixed弹出框中的input出现光标错位的问题 解决方案 一.设计交互方面最好不要让弹窗中出现input输入框: 二.前端处理此兼容性的方案思路: ...

  3. 弹出框中选项卡的运用(easyUI)

    先看一下页面效果: 此处有两个知识点:一个是弹出框的运用,一个是选项卡的运用 分析一下该HTML代码,最外面一个div是弹出框的,默认是关闭状态,可通过ID来控制弹出框的开关,该div的样式是easy ...

  4. 弹出框中的AJAX分页

    $(function() { $("body").on("click",".set-topic",function(){ /*获取所有题目接 ...

  5. 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题

    问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textare ...

  6. vue在element-ui的dialog弹出框中加入百度地图

    参考:https://blog.csdn.net/u012724595/article/details/82703579 <!-- gps弹窗 --> <el-dialog v-di ...

  7. firefox浏览器中 bootstrap 静态弹出框中select下拉框不能弹出(解决方案)

    问题出现场景1: 在firefox浏览器中在bootstrap弹出的modal静态框中再次弹出一个静态框时 select下拉框不能弹出选项 解决方案:去掉最外层静态框的 tabindex=" ...

  8. layer弹出框中icon数字参数说明

    前言icon参数为0,如下代码: layer.msg(}); 运行结果如图: icon参数为1,如下图 icon参数为2,如下图: icon参数为3,如下图: icon参数为4,如下图: icon参数 ...

  9. IOS中position:fixed弹出框中的input出现光标错位的问题

    解决方案是 在弹框出现的时候给body添加fixed <style type="text/css"> body{ position: fixed; width: 100 ...

随机推荐

  1. Loj #2324. 「清华集训 2017」小 Y 和二叉树

    Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上, ...

  2. Mariadb第一章:介绍及安装--小白博客

    mariadb(第一章)   数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以 ...

  3. express和cors跨域

    使用express框架: Express: Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. Express 框架核 ...

  4. 第四章· Redis的事务、锁及管理命令

    一.事务介绍 二.Redis乐观锁介绍 三.Redis管理命令 一.事务介绍 Redis的事务与关系型数据库中的事务区别 1)在MySQL中讲过的事务,具有A.C.I.D四个特性 Atomic(原子性 ...

  5. win10安装ab测试工具

    1.先下载 https://www.apachehaus.com/cgi-bin/download.plx 2.存到非中文无空格的目录 3.解压,并打开配置文件:Apache24\conf\httpd ...

  6. 7.docker日志收集

    默认情况下,docker logs或者docker service logs显示命令的输出,就像在终端中以交互方式运行命令时一样.UNIX和Linux命令通常开在运行时间上三个I / O流,所谓的 S ...

  7. 设置 sql_mode

    MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模 ...

  8. opencv 增强现实(二):特征点匹配

    import cv2 as cv import numpy as np # def draw_keypoints(img, keypoints): # for kp in keypoints: # x ...

  9. centos7虚拟机下python3安装matplotlib遇到的一些问题

    1.安装位置 centos7虚拟机+python3.6 2.问题 2.1如果是使用的python2版本可以使用如下方式, #yum search matplotlib 返回如下: 已加载插件:fast ...

  10. Vue(一)安装

    环境准备 这里我们就直接使用官方推荐的Vue CLI方式 CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.它可以通过 vue create 快速创建一个新项目 ...