如果我有一個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