以下代码返回 JSON 对象,而不是下载 PDF 文件:
var dataStream = new MemoryStream(System.IO.File.ReadAllBytes(@"C:\data\test12.pdf"));
dataStream.Position = 0;
HttpResponseMessage responseMsg = new HttpResponseMessage(HttpStatusCode.OK);
responseMsg.Content = new StreamContent(dataStream);
responseMsg.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("inline");
responseMsg.Content.Headers.ContentDisposition.FileName = file.Rows[0][1].ToString();
responseMsg.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
responseMsg.Content.Headers.ContentLength = dataStream.Length;
result = responseMsg;
输出:
{“版本”:{“主要”:1,“次要”:1,“构建”:-1,“修订版”:-1,“主要修订版”:-1,“次要修订版”:-1},”内容":{"标题":[{"键":"内容处置","值":["内联;文件名=4159a9f5-0102-46c3-a39f-7449c00e39e5.pdf"]},{"键": "Content-Type","value":["application/pdf"]},{"key":"Content-Length","value":["7874"]}]},"statusCode":200," reasonPhrase":"确定","headers":[],"requestMessage":null,"isSuccessStatusCode":true}
下面的代码返回 JSON 对象而不是下载 pdf 文件。
这是调用该api时的预期结果。在您当前的代码中,框架将
HttpResponseMessage
视为模型。
调用api后下载文件的正确方式应该是:
public IActionResult Get()
{
var dataStream = new MemoryStream(System.IO.File.ReadAllBytes(@"C:\data\test12.pdf"));
Response.Headers.Add("Content-Disposition", "inline; filename=test.pdf");
return File(dataStream, "application/pdf");
}
如果要使用
HttpResponseMessage
,需要通过ajax调用api。