如果我有一个PDF文件作为Stream,我该如何将它写入响应输出流?将PDF流写入响应流
15
A
回答
17
由于您使用MVC,最好的办法是使用FileStreamResult
:
return new FileStreamResult(stream, "application/pdf")
{
FileDownloadName = "file.pdf"
};
与控制器Response.Write
或Response.OutputStream
打非惯用的和没有理由的时候已经存在一个写自己的ActionResult 。
-2
请试试这个:
protected void Page_Load(object sender, EventArgs e) {
Context.Response.Buffer = false;
FileStream inStr = null;
byte[] buffer = new byte[1024];
long byteCount; inStr = File.OpenRead(@"C:\Users\Downloads\sample.pdf");
while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0) {
if (Context.Response.IsClientConnected) {
Context.Response.ContentType = "application/pdf";
Context.Response.OutputStream.Write(buffer, 0, buffer.Length);
Context.Response.Flush();
}
}
}
11
一种方式做到这一点如下:
//assuming you have your FileStream handle already - named fs
byte[] buffer = new byte[4096];
long count = 0;
while ((count = fs.Read(buffer, 0, buffer.Length)) > 0)
{
response.OutputStream.Write(buffer, 0, count);
response.Flush();
}
您还可以使用GZIP压缩,以加快文件传输到客户端(少流式传输)。
3
HTTP响应是通过HttpContext.Response.OutputStream
属性暴露给你一个流,所以如果你有PDF文件流,你可以简单地将数据从一个流复制到其他:
CopyStream(pdfStream, response.OutputStream);
对于实施CopyStream
看到Best way to copy between two Stream instances - C#
5
在asp.net这是下载一个PDF文件
Dim MyFileStream As FileStream
Dim FileSize As Long
MyFileStream = New FileStream(filePath, FileMode.Open)
FileSize = MyFileStream.Length
Dim Buffer(CInt(FileSize)) As Byte
MyFileStream.Read(Buffer, 0, CInt(FileSize))
MyFileStream.Close()
Response.ContentType = "application/pdf"
Response.OutputStream.Write(Buffer, 0, FileSize)
Response.Flush()
Response.Close()
相关问题
- 1. 将PDF流写入响应流
- 2. node.js写入http响应流
- 3. 为什么写入响应流时
- 4. 将StringBuilder写入流
- 5. MVC。 Itextsharp将pdf写入响应
- 6. 如何将流写入内存流?
- 7. 在openrasta的响应流中编写PDF内容
- 8. NodeJS - 响应流
- 9. 在ASP.Net中写回流到响应中
- 10. 在Koa使用Mongoose编写流式查询流式响应
- 11. java.lang.OutOfMemoryError:Java堆空间 - 将pdf写入输出流
- 12. 如何将PDF读入内存流?
- 13. Clojure - 环流响应
- 14. 将程序写入输入流
- 15. 我想响应流写入到文件时出现错误
- 16. 流媒体REST响应与坐落流
- 17. 如何将XML返回给响应流?
- 18. 将多个内容类型写入Web部件页面响应流
- 19. 将缓冲区写入响应流或长时间运行请求结束?
- 20. 将二进制响应(流)直接写入Notes文档中的MIME
- 21. 将写入流与读取流进行比较
- 22. 将输出流写入字符串
- 23. 将RTP流数据写入文件
- 24. 如何将对象写入流?
- 25. 将流写入缓冲区对象
- 26. 将输出流写入新窗口
- 27. 将字符串写入输出流
- 28. PHP:将所有行写入流
- 29. 如何将流数据集写入Cassandra?
- 30. 如何将流数据写入S3?
确定为Web表单的方式s但不适用于mvc – lnu 2011-04-29 09:57:29
为什么字节数组的长度是1024?如果它的大小超过了你的定义呢? – 2014-08-26 08:12:30
因为文件未关闭而Downvote。 – arni 2017-12-01 17:14:37