1

我正在使用Resumeable.js(客戶端)和C#MVC/WebAPI(服務器)編寫文件上載服務。C#ReadAsByteArrayAsync結果與原始數據不同並導致文件損壞

在客戶端,Resumeable.js爲上傳的文件創建一個blob,並構造一個多部分請求以將一些文件信息(名稱,大小等)與blob一起打包。

在服務器端,我們使用ReadAsMultipartAsync()來解析多部分請求,並使用ReadAsByteArrayAsync()從文件中獲取字節。

var parts = await Request.Content.ReadAsMultipartAsync(); 
... 
// if parts contains file 
request.ChunkContent = currentPart.Contents.ReadAsByteArrayAsync().Result; 

它工作正常的純文本文件,然而,當我使用此文件上傳服務上傳12KB .docx文件,通過ReadAsByteArrayAsync()返回的字節數組是從原始文件中的數據不同,在第一16字節相同,數組的大小增加到18000+。 我檢查過我們發送給服務器的字節在提琴手中都是正確的。 使用utf-8編碼不能解決問題,有沒有人遇到過相同的問題?

+0

嘗試等待而不是。結果 –

回答

0

在我的項目中,我使用IdentityServer3框架,最近我升級到版本2.6.0,從那時起問題就開始了。

如果這是你的情況,只需降級到版本2.5.0。

+0

我們沒有使用該框架,仍然不知道干擾數據的是什麼。我們最終使用64位字符串而不是原始二進制數據作爲解決方法。 – yyc