这是我的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方法.