我在表单上有一个提交按钮,当它被按下时,提交表单并在服务器硬盘驱动器上创建一个Excel文件(C:/ ExcelFiles)。
完成此操作后(在提交de form之后)我想使用Ajax下载此文件。
这就是我所做的,但它不起作用:
$(document).on('click', '#saveButton', function () {
$('#saveMessage').empty();
$('#saveMessage').append("<p>Your file has been stored in C:\\ExcelFiles</p>");
var data = $('#fileName').val();
alert(data);
$.ajax({
type: 'POST',
url: '/Calculation/Download',
data: data,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (returnValue) {
window.location = '/Calculation/Download?fileName=' + returnValue;
}
});
});
我的控制器动作如下所示:
[HttpGet]
public virtual ActionResult Download(string fileName)
{
string fullPath = Path.Combine(Server.MapPath("~/ExcelFiles"), fileName);
return File(fullPath, "application/vnd.ms-excel", fileName);
}
现在没有任何事情发生。我做错了什么?
答案 0 :(得分:2)
您无法通过.ajax从服务器下载文件(出于安全原因)。 但是,您可以将浏览器指向该位置并下载该文件。 解决方案应该是这样的:
$(document).on('click', '#saveButton', function () {
$('#saveMessage').empty();
$('#saveMessage').append("<p>Your file has been stored in C:\\ExcelFiles</p>");
var data = $('#fileName').val();
window.location = '/Calculation/Download?fileName=' + data ;
});