我很难弄清楚如何将文件InputStream从文件上传Post请求到服务器,然后才能完全加载到内存中。
对于较小的文件,这不是问题,但我担心在尝试上传较大的文件(1或更多GB)后会发生什么。我找到了使用HttpContext.Request.GetBufferlessInputStream(true)
的可能解决方案,但是此流包括整个请求,而不仅仅是上传文件,如果我使用它来上传文件,例如上传到Azure Blob存储器或其他任何我最终使用损坏的文件。我也丢失了有关文件的所有信息(文件名,大小等)。
有没有方便的方法将大文件上传到服务器而不填充内存?我想获取流,然后使用它以块的形式上传文件。
谢谢。
我使用DevExpress UploadControl进行类似的任务。它支持large file upload by chunks。临时文件保存在服务器硬盘驱动器上,您可以使用FileSteam获取它而无需在服务器内存中完全加载。它还支持direct upload到Azure,Amazon和Dropbox。他们的MVC上传控件也是如此。