У меня есть универсальный обработчик, который я называю, используя этот очень простой код JS:ответ Перенаправление для загрузки файла
var formData = new FormData();
formData.append("fileId", this.model.get("id"));
xhr = new XMLHttpRequest();
xhr.open('POST', '/genericHandlers/DownloadFile.ashx');
xhr.onload = function() {
if (xhr.status === 200) {
// Do something here?
}
}
xhr.send(formData);
Мой общий код обработчика, кажется, выглядит хорошо для меня. В основном я пытаюсь построить заголовок ответа, и я подумал, что когда этот обработчик вернется, он начнет загрузку файла.
Handler Код:
var fileId = context.Request.Form["fileId"];
// File stored in the db as a byte array
var file = (from f in dataContext.OneEVA_Docs_File_Storages
where Equals(f.ID, fileId)
select f).FirstOrDefault();
context.Response.Clear();
context.Response.AddHeader("Content-Type", file.ContentType);
context.Response.AddHeader("Content-Length", file.ContentLength.ToString());
context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}; size={1}", file.Name, file.ContentLength));
context.Response.BinaryWrite(file.File_Image.ToArray());
context.Response.Flush();
context.Response.End();
Запрос XHR
завершает нормально. Вот заголовок ответа, который я возвращаю:
Cache-Control:private
Connection:Close
Content-Disposition:attachment; filename=Mikes File; size=1860113
Content-Length:1860113
Content-Type:image/jpeg
Date:Wed, 16 May 2012 14:08:01 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
Что мне не хватает? Что я делаю не так?
В чем проблема? Не попадает ли файл в ответ? – sinni800
@ sinni800 Он просто возвращается, без загрузки. –