[英]getting 'System.OutOfMemoryException' when converting byte array to string
[英]System.OutOfMemoryException was thrown at converting base64 string to byte array while processing multiple files
我試圖通過異步XMLHTTPRequest發送批處理文件以及各種其他表單元素。 每個批次可以包含最大15 MB的文件大小。 可以有多個批次。
我正在讀取javascript中的文件並將它們轉換為base64字符串,然后嘗試接收控制器中的文件(使用for循環)並將它們轉換為字節數組。
string fileValue1 = form.GetValues("fileName1");
string fileValue2 = form.GetValues("fileName2");
文件值的格式如下,具體取決於附件的類型:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABkC...
使用下面的子字符串刪除','之前的內容,並在將其轉換為字節數組之前進行一些處理。
fileValue1 = fileValue1 .Substring(fileValue1 .IndexOf(',') + 1);
fileValue1 = fileValue1 .Trim().Replace(" ", "+");
fileValue1 = Convert.FromBase64String(fileValue1)
由於我通過多個批次發送文件(例如,如果有10個批次),將會有大約150到200 MB的文件試圖通過異步AJAX調用到達控制器。
發送時,我收到以下錯誤消息:
System.OutOfMemoryException was thrown at converting base64 string to byte array - occuring at replace statement.
我已經按照各種帖子進行了解決方法,但似乎沒有什么對我有用。 我試圖將web.config中的“httpRuntime maxRequestLength”和“maxAllowedContentLength”增加到4 GB以允許巨大的尺寸,但似乎沒有任何效果。
如果我刪除該行
fileValue1 = fileValue1 .Substring(fileValue1 .IndexOf(',') + 1);
我收到以下錯誤:
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
通過多批次發送時,文件的最大大小可達500 MB。
我不確定,如何逐塊讀取此字符串文件,以確保在轉換為字節數組之前內存可用。 任何幫助將不勝感激。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.