我必须触发用户将大文件下载到网络浏览器,在其中创建要在服务器上传输的文件,然后立即将其删除。我已经找到足够多的例子来表明我应该使用 Response.TransmitFile 或 Response.WriteFile...但听说两者都存在问题:
WriteFile 是同步的,但它在将文件发送给用户之前将其缓冲在内存中。由于我正在处理非常大的文件,这可能会导致问题。
TransmitFile 不在本地缓冲,因此它确实适用于大文件,但它是异步的,因此在调用 TransmitFile 后我无法删除文件。显然刷新文件并不能保证我也可以删除它?
处理这个问题的最佳方法是什么?
还有 BinaryWrite...我可以循环遍历文件流,分段复制它吗?
这是一个很好的解决方案,它使用 TransmitFile 但允许您在使用委托完成后执行某些操作:
http://improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application http://improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application
只需将最后的日志记录替换为文件删除即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)