jquery – 如何强制从ASP.NET WebAPI下载文件

这是我的web-api代码:

    [HttpPost]
    public HttpResponseMessage PostFileAsAttachment()
    {
        string path = "D:\\heroAccent.png";
        if (File.Exists(path))
        {

            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            var stream = new FileStream(path, FileMode.Open);
            result.Content = new StreamContent(stream);
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentDisposition.FileName = "xx.png";
            return result;
        }
        return new HttpResponseMessage(HttpStatusCode.NotFound);
    }

如何编写客户端(视图)强制下载文件给我(如自动下载模式(打开,另存为)可以弹出…)

最佳答案 如上所述,您无法从ajax触发“打开/另存为”对话框.

如果要在下载文件时保留当前页面内容,可以在页面中的某处添加隐藏的iframe,并让下载链接在后台执行一些JS,将所述iframe的src属性设置为适当的位置.

$('iframeSelector').attr('src', downloadLinkLocation)

我已经使用返回FileContentResult的操作对此进行了测试,但如果您在响应头中设置ContentDisposition,就像您一样,我认为没有理由不使用WebAPI方法.

点赞