Я часами вырывал свои волосы, пытаясь понять это.У меня есть iframe, с которым я хочу скачать файл.Все работает нормально, но загрузка iframe не вызывается, если моя Response.ContentType = "APPLICATION/OCTET-STREAM";
Моя функция javascript выглядит следующим образом:
function DownloadStuff(){
var DownloadSource = "http://Apage.aspx"
var iframe = $("#hiddenDownloader");
if (iframe.attr("id") === undefined) {
$('<iframe />', { id: 'hiddenDownloader', onload:'javascript:alertReady();' }).appendTo('body');
iframe = $("#hiddenDownloader");
}
iframe.attr('src', DownloadSource);
}
function alertReady() {
alert("Ready");
}
Мой код на стороне сервера выглядит так:
Response.Clear();
Response.CacheControl = "no-cache";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetValidUntilExpires(false);
Response.ExpiresAbsolute = DateTime.Parse("1/1/2000");
Response.Expires = 0;
Response.ContentType = "APPLICATION/OCTET-STREAM";
Response.AddHeader("Content-Disposition", "attachment;filename=\"ReportDeck.pptx\"");
byte[] bytes = (byte[])PowerPointFile.Tables[0].Rows[0]["PPTBlob"];
bytes = Compression.DeCompressByteArray(bytes);
Response.OutputStream.Write(bytes, 0, bytes.Length);
Если я удаляю ContentType и Header, вызывается onload, но затем файл не загружается через диалоговое окно сохранения файла, а вместо этого записывается в iframe.
С уважением, Байрон Кобб.