Javascript 使用AJAX下载ASP.NET内核提供的文件

Javascript 使用AJAX下载ASP.NET内核提供的文件,javascript,c#,ajax,asp.net-core,Javascript,C#,Ajax,Asp.net Core,我在ASP.NET Core上有服务器代码,返回一个文件: [HttpGet] [Route("update")] public IActionResult GetUpdate(int progId, string version) { var update = db.Updates.FirstOrDefault(u => u.ProgramId == progId && u.Version == version);

我在ASP.NET Core上有服务器代码,返回一个文件:

    [HttpGet]
    [Route("update")]
    public IActionResult GetUpdate(int progId, string version)
    {
        var update = db.Updates.FirstOrDefault(u => u.ProgramId == progId && u.Version == version);
        if (update != null)
        {
            return new FileContentResult(update.Zip, "file/zip");
        }
        return BadRequest();
    }
我需要用AJAX下载它。 我试着这样做:

$('#testBtn').click(function () {
$.ajax({
    type: 'GET',
    url: 'https://localhost:44356/api/managment/update',
    data: 'progId=1&version=1.1',
    success: function(data) {
        const datafile = new Uint8Array(new Buffer(data));
        fs.writeFile('test.zip', datafile, (err) => {
            if (err) throw err;
            console.log('The file has been saved!');
        });
    }
})
还有更多不同的缓冲区和数组组合,但都不起作用


请任何人建议我应该怎么做,或者我错在哪里?

经过一些研究,发现我可以从字节数组返回base64字符串,然后轻松地编写它。 服务器端(asp.net core 2.2):

客户端(电子):


您提到Node.js,但这是客户端代码,使用
jQuery
。我很困惑。你有任何错误或异常吗?@MarcosCasagrande,这是electron。我知道electron是基于node.js的,对吗?@Sean nope。文件的大小为0 kb,或者,在我使用zip存档的情况下,文件的大小增加了一倍,存档中有一个损坏的文件。我想我缺少了一些关于类型的信息,asp.net core webapp使用参数update.zip形成FileContentResult,这是字节数组,但我不知道退出时有什么。
    [HttpGet]
    [Route("update")]
    public string GetUpdate(int progId, string version)
    {
        var update = db.Updates.FirstOrDefault(u => u.ProgramId == progId && u.Version == version);
        if (update != null)
        {
            return Convert.ToBase64String(update.Zip);
        }
        return "failed";
    }
$.ajax({
    type: 'GET',
    url: 'https://localhost:44356/api/managment/update?progId=1&version=1.1',
    success: function(data) {
        fs.writeFile('test2.zip', data, {encoding: 'base64'}, (err) => {
            if (err) throw err;
            console.log('The file has been saved!');
        });
    }
})