Я хочу включить загрузку файла в мое приложение MVC, не используя гиперссылку. Я планирую использовать изображение или подобное и сделать его доступным с помощью jQuery. На данный момент у меня простое тестирование.
Я нашел объяснение выполнения загрузки через метод действия, но, к сожалению, в этом примере все еще есть actionlinks.
Теперь я могу назвать метод действия загрузки просто прекрасным, но ничего не происходит. Думаю, мне нужно что-то сделать с возвращаемым значением, но я не знаю, что и как.
Здесь метод действия:
public ActionResult Download(string fileName)
{
string fullName = Path.Combine(GetBaseDir(), fileName);
if (!System.IO.File.Exists(fullName))
{
throw new ArgumentException("Invalid file name or file does not exist!");
}
return new BinaryContentResult
{
FileName = fileName,
ContentType = "application/octet-stream",
Content = System.IO.File.ReadAllBytes(fullName)
};
}
Здесь класс BinaryContentResult:
public class BinaryContentResult : ActionResult
{
public BinaryContentResult()
{ }
public string ContentType { get; set; }
public string FileName { get; set; }
public byte[] Content { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ClearContent();
context.HttpContext.Response.ContentType = ContentType;
context.HttpContext.Response.AddHeader("content-disposition",
"attachment; filename=" + FileName);
context.HttpContext.Response.BinaryWrite(Content);
context.HttpContext.Response.End();
}
}
Я вызываю метод действия с помощью:
<span id="downloadLink">Download</span>
который можно выполнить с помощью кнопки:
$("#downloadLink").click(function () {
file = $(".jstree-clicked").attr("rel") + "\\" + $('.selectedRow .file').html();
alert(file);
$.get('/Customers/Download/', { fileName: file }, function (data) {
//Do I need to do something here? Or where?
});
});
Обратите внимание, что параметр fileName получен правильно с помощью метода действия и всего остального, просто ничего не происходит, поэтому я думаю, мне нужно как-то обработать возвращаемое значение?