У меня есть контроллер ASP.NET MVC с методом, который должен подавать файл клиенту (браузеру). Действие контроллера вызывается с помощью вызова JQuery $ .ajax. Пользователю необходимо предложить загрузить файл после завершения действия контроллера.
Я использовал Response.Transmitfile / Response.WriteFile в методе контроллера, но оба не предложили мне загрузить файл в браузере IE, хотя файл был создан, и я также использую правильный путь к файлу.
Когда я вызываю тот же метод напрямую, введя URL-адрес контроллера в браузере, мне сразу же предлагается загрузить созданный файл.
Может ли кто-нибудь дать мне знать, если чего-то не хватает в этом потоке?
Я подозреваю, что именно так я вызываю действие контроллера в JQuery. Как использовать ответ на вызов JQuery Ajax, чтобы убедиться, что клиенту предлагается загрузить файл ?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreatePresentation(string id)
{
//do something here , create the file and place in a location on the server itself
string filename = Path.GetFileName(filePath);
Response.ContentType = "APPLICATION/OCTET-STREAM";
System.String disHeader = "Attachment; Filename=\"" + filename +
"\"";
Response.AppendHeader("Content-Disposition", disHeader);
FileInfo fileToDownload = new FileInfo(filePath);
Response.WriteFile(fileToDownload.FullName);
}
На стороне Javascript, вот как я вызываю действие контроллера
function CreatePresentation()
{
// something here
$.ajax({
type: "POST",
url: "http://localhost:4844/ActionBar/CreatePresentation",
data:data
});
} // end of function