我收到的byte[]
包含PDF。
我需要使用byte[]
并在浏览器中显示PDF 。
我发现了类似的问题 - How to return PDF to browser in MVC?。
但是,它在PDF查看器中打开PDF,我也收到一条错误,说文件无法打开,因为它是“ - 不支持的文件类型或因为文件已损坏”。
如何在浏览器中打开PDF?到目前为止,我的代码如下所示 -
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
Stream stream = new MemoryStream(byteArray);
stream.Flush();
stream.Position = 0;
return File(stream, "application/pdf", "Labels.pdf");
}
答案 0 :(得分:7)
您只需使用MemoryStream
代替Stream
和FileStreamResult
代替File
即可在浏览器中直接显示字节数组PDF:
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
using( MemoryStream pdfStream = new MemoryStream())
{
pdfStream.Write(byteArray , 0,byteArray .Length);
pdfStream.Position = 0;
return new FileStreamResult(pdfStream, "application/pdf");
}
}
答案 1 :(得分:3)
如果已经有了byte [],则应仅使用FileContentResult
,它“将二进制文件的内容发送到响应”。仅在流打开时使用FileStreamResult
。
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
return new FileContentResult(byteArray, "application/pdf");
}