Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax下载包含大量数据的pdf文件_Javascript_C#_Asp.net Mvc - Fatal编程技术网

Javascript Ajax下载包含大量数据的pdf文件

Javascript Ajax下载包含大量数据的pdf文件,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我正在尝试从服务器下载大型pdf文件,服务器需要一些时间来生成pdf并响应,所以请求显示为挂起 我需要在请求启动时显示微调器,并在请求完成时隐藏它 如何使用JavaScript ASP.NET MVC实现这一点 ——更新------ 示例控制器如下所示: public ActionResult DownloadFile() { return File(@"C:\Temp2\HolidayInnReceipt.pdf", "application/pdf", "Repo

我正在尝试从服务器下载大型pdf文件,服务器需要一些时间来生成pdf并响应,所以请求显示为挂起

我需要在请求启动时显示微调器,并在请求完成时隐藏它

如何使用JavaScript ASP.NET MVC实现这一点

——更新------

示例控制器如下所示:

public ActionResult DownloadFile()
    {


        return File(@"C:\Temp2\HolidayInnReceipt.pdf", "application/pdf", "Report.pdf");

    }
——更新------


这是一个示例项目。

您可以使用Ajax请求实现它

步骤1创建ajax调用以创建pdf文件
第2步返回保存的pdf文件路径,并设置window.location以下载pdf文件

在步骤1——您可以使用以下方法显示微调器:

示例:

   <body onload="loadingAjax('myDiv');">
    <div id="myDiv">
        <img id="loading-image" src="ajax-loader.gif" style="display:none;"/>
    </div>
</body>

剧本呢-

<script>
function loadingAjax(div_id) {
      var divIdHtml = $("#"+div_id).html();
      $.ajax({
           type: "POST",
           url: "controller/method", //URL which generate pdf
           data: "data here",
           beforeSend: function() {
              $("#loading-image").show();
           },
           success: function(msg) {
              $("#loading-image").hide();
              window.location= msg.FilePath;
           }
      });
}
</script> 

函数加载jax(div_id){
var divIdHtml=$(“#”+div_id).html();
$.ajax({
类型:“POST”,
url:“控制器/方法”,//生成pdf的url
数据:“数据在此”,
beforeSend:function(){
$(“#加载图像”).show();
},
成功:功能(msg){
$(“#加载图像”).hide();
window.location=msg.FilePath;
}
});
}
参考文献:

添加以下CSS

#覆盖层{
位置:固定;
显示:无;
宽度:100%;
身高:100%;
排名:0;
左:0;
右:0;
底部:0;
背景色:rgba(0,0,0,0.5);
z指数:99;
光标:指针;
}
格式标签
下载


正在下载
脚本标记

函数确认对话框(消息){
调试器;
var x=窗口。确认(消息)
调试器;
if(x){
on();
$.ajax({
url:'@url.Action(“YourMVC_方法”、“控制器”),
键入:“GET”,
contentType:'application/json;charset=utf-8',
成功:功能(结果){
调试器;
$(“label[itemid='lblmsg'])。show();
$('label[itemid=“lblmsg”]”)。text('DownloadSuccess');
off();
},
错误:函数(ex){
//警报(ex);
$('label[itemid=“lblmsg”]')。hide();
off();
}
});
}
否则{
$('label[itemid=“lblmsg”]')。hide();
off();
}
}
关于()的函数{
document.getElementById(“覆盖”).style.display=“块”;
}
函数off(){
document.getElementById(“覆盖”).style.display=“无”;
}

您可以使用
URL.createObjectURL
为下载的
blob
对象获取临时URL,然后只需使用带有
download
属性的链接即可

<div id="spinner" style="display: none;">Loading...</div>
<button onclick="downloadPDF()">Download</button>

它说文件已下载,但没有在Chrome中打开“另存为”对话框,我在任何地方都看不到文件。只是它重命名了所有名称,实际代码是“导入数据库”正确!!您只能从我上面的代码中选取重叠方法和ajax文件作为参考!!并设置您的PDF下载代码!!它将为美国工作。。ThanksIn success:function(result)-结果包含PDF文件,如何调用浏览器默认行为?如果返回的json结果的属性FilePath设置为PDF文件路径,则我没有返回json,我将退出文件流内部的FileResult。
 <button class="btn btn-default btn-lg" onclick="ConfirmDialog('Are you sure you want To Download?')">Download</button>
<br /><br />
<div id="overlay">
    <div id="text">
        <img src="~/assets/images/loadingimage.gif" style="width:5%;" /><span> &nbsp; Downloading....</span>
    </div>
</div>
<label class="error-msg" style="color:green;" itemid="lblmsg"></label>
<script type="text/javascript">
    function ConfirmDialog(message) {
        debugger;

        var x = window.confirm(message)
        debugger;
        if (x) {
            on();               
            $.ajax({
                url: '@Url.Action("YourMVC_Method", "Controller")',
                type: 'GET',
                contentType: 'application/json;charset=utf-8',
                success: function (result) {
                    debugger;
                    $("label[itemid='lblmsg']").show();
                    $('label[itemid="lblmsg"]').text('DownloadSuccess');
                    off();
                },
                error: function (ex) {
                    //alert(ex);
                    $('label[itemid="lblmsg"]').hide();
                    off();
                }
            });
        }
        else {
            $('label[itemid="lblmsg"]').hide();
            off();
        }
    }
    function on() {
        document.getElementById("overlay").style.display = "block";
    }

    function off() {
        document.getElementById("overlay").style.display = "none";
    }
</script>
<div id="spinner" style="display: none;">Loading...</div>
<button onclick="downloadPDF()">Download</button>
function downloadPDF () {
  const spinner = document.getElementById("spinner")

  spinner.style.display = "block"

  fetch('YOUR_URL_HERE')
    .then(resp => resp.blob())
    .then(blob => {
      const href = URL.createObjectURL(blob)
      const link = document.createElement('a')

      link.href = href;
      link.download = "filename.pdf"
      link.click()

      spinner.style.display = "none"
    })
}