【问题标题】:Medium trust large file upload in Asp.Net在 Asp.Net 中的中等信任大文件上传
【发布时间】:2011-06-09 13:53:14
【问题描述】:

我需要在我的托管 (godaddy) 中等信任 asp.net 应用程序中支持大文件上传。
它显然需要对进度指示做出响应,因此自己处理流很重要。

这一切看起来都很简单,并且在完全信任的情况下运行良好:
1.编写一个监听文件上传的HttpModule。
2.使用反射从Context中获取HttpWorkerRequest对象。
3.将流写入FileStream

一切都很好,除了我在尝试从中等信任的上下文中获取 HttpWorkerRequest 对象时不断收到权限异常。无论我使用反射还是使用 System.IServiceProvider.GetService() 来获取对象(显然是使用反射),我都会得到同样的错误。

我也尝试过使用 System.Web.HttpPostedFile。它有一个属性 InputStream。但似乎这个对象在初始化时上传了整个文件,所以不好。

我用谷歌搜索自己很累,找不到其他选择。

即使让用户拥有 HttpWorkerRequest 对象存在安全风险,框架肯定会在 Method="POST" 和 enctype="multipart/form-data" 时提供另一种处理文件流的方法

任何想法都会很棒
谢谢

【问题讨论】:

    标签: c# asp.net reflection stream


    【解决方案1】:

    您也可以尝试阅读context.Request.InputStream。

    【讨论】:

    • 我试了一下。我尝试从流中读取()的那一刻,浏览器上传了整个文件。所以这有点违背了目的。
    • @slightlyannoyed,你读的怎么样?您不应该将整个流加载到缓冲区中。您需要分块读取它并立即将这些块写入另一个流(例如文件流)。
    • 是的。我正在分块阅读。具体来说,一次 4096 个字节。就一块一块地喂我而言,调用 Read() 方法似乎可以完成它的工作。但是在它返回第一个块之前,框架在未经我同意的情况下从浏览器中获取整个文件。有意义吗?
    猜你喜欢
    • 2014-08-06
    • 2010-12-13
    • 2015-01-20
    • 2010-09-13
    • 2010-11-22
    • 2011-04-06
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多