显示加载程序,直到浏览器启动文件下载
本文关键字:浏览器 启动 文件下载 加载 程序 显示 | 更新日期: 2023-09-27 17:58:15
我想显示加载程序,直到文件下载开始
我该怎么做?
这是我的代码:
$('body').prepend("<form method='post' action='create' id='doneform'>" +
"<input type='hidden' name='data' value='" + data + "' >" +
"<input type='hidden' name='brandcolor' value='" + brandcolor + "' >" +
"</form>");
$('#doneform').submit();
控制器
[HttpPost]
public ActionResult create()
{
...some stuff....
System.Web.HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition",
String.Format("{0}; filename={1}.pdf;size={2}", "attachment", filename, pdfBuffer.Length));
System.Web.HttpContext.Current.Response.BinaryWrite(pdfBuffer);
System.Web.HttpContext.Current.Response.End();
}
http://syper-blogger.blogspot.in/2011/08/how-to-detect-start-of-file-download.html
这解决了问题。。。。。。。。。。。。。
我不认为这是一种正确的方法,但您可以尝试这种
HTML
- 从谷歌或其他任何地方获取一个合适的.gif类型的加载图像
- 将其添加到图像标记中
<img id="loading-image" src="loader.gif" style="display:none" />
JavaScript
$("#doneform").submit(function(event) {
$('#loading-image').show();
event.preventDefault();
var data = $(this).find('input[name="data"]').val();
var brandcolor = $(this).find('input[name="brandcolor"]').val();
$.ajax({
url: '/[Controller]/[Action]',
cache: false,
data:{ data: data, brandcolor:brandcolor },
success: function(html){
// Do your stuff.
},
complete: function(){
$('#loading-image').hide();
},
error: function () {
// Handle any errors here.
}
});
});
控制器
您可以尝试FileResult
public FileResult create()
{
var fileName = "Something.pdf";
//Create your pdf file here and save it into a location
byte[] fileBytes = System.IO.File.ReadAllBytes("Path for the created pdf file");
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}