使用ajax下载文件

本文关键字:文件 下载 ajax 使用 | 更新日期: 2023-09-27 18:00:20

我在表单上有一个提交按钮,当按下该按钮时,表单将被提交,并在服务器硬盘上创建一个Excel文件(C:''ExcelFiles)。

完成后(在提交反表单后),我想使用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);
    }

现在什么都没发生。我做错了什么?

使用ajax下载文件

您无法通过.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 ;
});