我正在尝试从Web应用程序上传一个大文件,并将其作为内存流以便稍后处理。在尝试将HttpPostedFileBase的输入流复制到新的MemoryStream时,我收到了OutOfMemory异常。在故障排除期间,我尝试创建一个新的MemoryStream并分配与InputStream(935,638,275)的长度相同的空间(大致),如下所示:
MemoryStream memStream = new MemoryStream(935700000);
即使这样做也会导致此行发生System.OutOfMemoryException。
我只是略微了解MemoryStreams,这似乎与MemoryStreams缓冲数据的方式有关。有没有办法让我把所有数据都放到一个MemoryStream中而不用太大惊小怪?
答案 0 :(得分:1)
我不确定处理涉及什么,但是HttpPostedFileBase已经包含了一个包含数据的流。您可以使用该流来处理您需要执行的操作。
如果您确实需要在流上来回移动或多次,并且输入流不支持搜索/定位,您可能需要先将数据流式传输到临时本地文件,然后使用文件流对该文件进行处理。
如果有很多人通过您的网络应用上传,您指定的数组大小将使用MemoryStream快速占用所有内存。