我正在使用 httpresponsemessage 通过 Web API 显示文件。如果我使用内容处置类型附件,我没有问题。我被要求直接在浏览器中打开它们(处置类型附件)。我只是将类型更改为内联,并且在除 IE 之外的所有浏览器中一切正常。我在尝试使用 IE 时收到“Internet Explorer 遇到错误并需要关闭”错误。
这是我正在使用的代码
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
byte[] filebytes = null;
using (FileStream fs = new FileStream(strPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
filebytes = new byte[fs.Length];
fs.Read(filebytes, 0, filebytes.Length);
}
response.Headers.Clear();
response.Content = new ByteArrayContent(filebytes);
CacheControlHeaderValue cch = new CacheControlHeaderValue();
cch.Private = true;
response.Headers.CacheControl = cch;
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
response.Content.Headers.ContentLength = filebytes.Length;
ContentDispositionHeaderValue ch = new ContentDispositionHeaderValue("attachment");
ch.FileName = "Document.pdf";
response.Content.Headers.ContentDisposition = ch;
return response;
我试过的:
- 添加日期创建的标题
- 使用流而不是字节数组
- 删除私有缓存控制标头。我之所以添加这个,是因为我遇到的 Windows XP 机器不显示文件的问题。即使我完全删除了缓存控制标头,我仍然有问题。这不是问题。
- 先清头,不先清头
有什么建议么?