我在嘗試使用ASP.NET中的HTTP文件上載發送大文件時遇到困難。上傳並接收使用ASP.NET進行http壓縮的大文件時,出現「mime multipart stream意外結束」
目標是傳輸大於2GB的內容,壓縮以節省帶寬。發送3GB未壓縮的效果很好,所有文件都被正確接收並保存在磁盤上。然而,當我使用壓縮(無論是gzip或deflate),我從接收API得到以下錯誤:
Unexpected end of MIME multipart stream. MIME multipart message is not complete.
的事情是,發送大量請求,只有當(約300MB爲上限),我得到例外。上傳200MB壓縮的作品。
這裏的上傳代碼:
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
client.BaseAddress = new Uri(fileServerUrl);
client.DefaultRequestHeaders.TransferEncodingChunked = true;
CompressedContent compressedContent = new CompressedContent(content, "gzip");
var request = new HttpRequestMessage(HttpMethod.Post, "/api/fileupload/")
{
Content = compressedContent
};
var uploadResponse = client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;
}
}
的CompressedContent
類是WebApiContrib集助手
這裏的類的接收端
// CustomStreamProvider is an implementation to store the files uploaded on the disk
var streamProvider = new CustomStreamProvider(uploadPath);
var res = await Request.Content.ReadAsMultipartAsync(streamProvider);
streamProvider.FileData.Select(file => new FileInfo(file.LocalFileName)).Select(fi => fi.FullName)
你能爲我提供什麼線索問題是?爲什麼較大的內容(大於300MB)看起來被壓縮不當,而較小的內容傳輸得很好?
謝謝你的回答。我已經遇到了兩種解決方案:給所有轉移完成的文件命名。 至於其他解決方案:先試過,現在再試一次。我使用FileStream處理請求,因爲使用MemoryStream會導致OutOfMemoryException。仍然沒有任何變化:上傳數據低於300MB的作品和上傳較大的內容導致錯誤提到:( – patryk 2015-04-06 10:02:07