如果我有一個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. WCF流式PDF響應
- 4. 使用JavaScript將PDF流寫入iFrame
- 5. 爲什麼寫入響應流時
- 6. 將StringBuilder寫入流
- 7. MVC。 Itextsharp將pdf寫入響應
- 8. 如何將流寫入內存流?
- 9. HttpListener將數據寫入響應輸出流
- 10. 將mp3文件寫入響應輸出流
- 11. 刷新頁面後寫PDF到響應輸出流
- 12. 在openrasta的響應流中編寫PDF內容
- 13. NodeJS - 響應流
- 14. 響應流
- 15. 將流寫入RCDATA資源
- 16. 將\ r寫入輸出流
- 17. 在ASP.Net中寫回流到響應中
- 18. 手動寫流沒有CHUNKED響應
- 19. 在Koa使用Mongoose編寫流式查詢流式響應
- 20. node.js - 將兩個可讀流寫入相同的可寫流
- 21. java.lang.OutOfMemoryError:Java堆空間 - 將pdf寫入輸出流
- 22. 如何將PDF讀入內存流?
- 23. Node.js HTTP響應流
- 24. OpenRasta流式響應
- 25. Clojure - 環流響應
- 26. 將程序寫入輸入流
- 27. 流媒體REST響應與坐落流
- 28. 下載在ASP .NET中寫入響應流的文件C#
- 29. 我想響應流寫入到文件時出現錯誤
確定爲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