簡體   English   中英

ASP.NET MVC 如何在完全上傳之前開始讀取已發布的文件流?

[英]ASP.NET MVC How can I begin reading from a posted file stream before it is fully uploaded?

我有一個通過 HttpPostedFileBase 接收文件的 ASP.NET MVC 操作。

我想盡快開始從流中讀取。 這樣我就可以報告上傳進度(通過單獨的機制)。 我遇到的問題是,在上傳的文件完整可用之前,我在此操作中的斷點不會被擊中。

如何在完全上傳之前閱讀已發布的文件流?

[HttpPost]
public ActionResult Upload(HttpPostedFileBase uploadFile)
{
    ... uploadFile has been fully uploaded before this point
}

編輯:更新 - 我現在嘗試了另一種方式,通過 HttpHandler 實現這個邏輯,但是,當我開始從流中讀取時,代碼會阻塞,直到文件流完成上傳到服務器。

目前還沒有運氣。

問題是在 HttpContext.Request 對象上使用多個屬性會導致 ASP.NET 等待,直到處理完完整的發布數據。 繞過這個問題的關鍵是 HttpContext.Request.GetBufferlessInputStream()。 然而,這需要處理,並且沒有內置的方法來做到這一點。

最終的解決方案是創建可以解析原始帖子數據中的多部分內容的類,我通過查看它在 ASP.NETs HttpContext.Request 代碼中是如何完成的來實現的。 我在 System.Web 中找到了各種組件,並且能夠適應我的需求。

代碼現在構成了我在這里編寫的項目的一部分:

https://journals.appsoftware.com/public/20/97/3819/programming-blog/development/asp.net-file-uploader-with-signalr-progress-bar-and-extended-input-stream-processing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM