Как загрузить файл из БД с помощью ajax вызова MVC
Я пытаюсь реализовать функциональность загрузки файлов через ajax-вызов в MVC. После вызова метода контроллера у меня всегда есть "parseerror", может ли кто-нибудь объяснить мне, почему?
с простой ссылкой для скачивания в razor это работает, но не с ajax. Что я здесь делаю не так?
Что я уже пробовал:
my ajax: tab.on("click", ".FileDownload", function (e) { //$('#uploadStatus').html("ok"); var tr = $(this).closest("tr"); var id = tr.data("id"); $.ajax({ type: "POST", url: "/File/FileDownload", //contentType: false, //processData: false, //dataType: "json", data: { fileId: id }, success: function (data) { $('#uploadStatus').html("ok"); }, error: function (err) { alert(err.statusText); } }); });
and controller: [HttpPost] public FileResult FileDownload(int? fileId) { FileDBEntities db = new FileDBEntities(); tblFile file = db.tblFiles.ToList().Find(p => p.id == fileId.Value); return File(file.Data, file.ContentType, file.Name); }
F-ES Sitecore
Как вы уже выяснили, вы не можете загружать файлы с помощью ajax. При использовании ajax все происходит в javascript, и js не имеет доступа на запись к вашему жесткому диску, поэтому, хотя он может обработать запрос, он не может сделать ничего значимого с результатами. Чтобы сохранить файл, вам нужно, чтобы загрузчик файлов браузера включился, и это произойдет только тогда, когда браузер сделает запрос, который имеет загрузку в качестве ответа, вы не можете инициировать этот процесс через js.