我正在MVC4中编写应用程序。如何将pdf转换为内存流
我在服务器上有一个物理pdf文件。我想将其转换为一个内存流,并将其发送给用户这样的:
return File(stream, "application/pdf", "myPDF.pdf");
但我怎么转换PDF文件到内存流?
谢谢!
我正在MVC4中编写应用程序。如何将pdf转换为内存流
我在服务器上有一个物理pdf文件。我想将其转换为一个内存流,并将其发送给用户这样的:
return File(stream, "application/pdf", "myPDF.pdf");
但我怎么转换PDF文件到内存流?
谢谢!
你不需要MemoryStream
。最简单的方法是使用过载接受的文件名:
return File(@"C:\MyFile.pdf", "application/pdf");
另一种解决方案是使用重载接受byte[]
:
return File(System.IO.File.ReadAllBytes(@"C:\Myfile.pdf"), "application/pdf");
,或者如果你想使用FileStream
:
return File(new FileStream(@"C:\MyFile.pdf", FileMode.Open, FileAccess.Read), "application/pdf");
真棒谢谢.. – user2206329
使用使用文件名的过载,see here。当你有一个物理文件时,这是最简单的解决方案。
工作了
var pdfContent = new MemoryStream(System.IO.File.ReadAllBytes(imageLocation));
pdfContent.Position = 0;
return new FileStreamResult(pdfContent, "application/pdf");
这并不坏,但这会不必要地分配大量内存。您失去了可以*流式传输*的物理文件的优势。 – fejesjoco
我会不说“转换”。鉴于文件形式的pdf是一个没有转换的字节流。为什么你需要一个内存流?任何流应该做,并猜测是什么,有一个文件流。 – TomTom
[如何通过ASP.NET MVC中的FileResult创建文件并将其返回?](http://stackoverflow.com/questions/1375486/how-to-create-file-and-return-it-via- fileresult-in-asp-net-mvc) –