and*_*eer 3 asp.net iis asp.net-mvc
鉴于以下代码非常通用,我希望有人可以告诉我一些幕后发生的事情......
[HttpPost]
public ActionResult Load(Guid regionID, HttpPostedFileBase file)
{
if (file.ContentLength == 0)
RedirectToAction("blablabla.....");
var fileBytes = new byte[file.ContentLength];
file.InputStream.Read(fileBytes, 0, file.ContentLength);
}
Run Code Online (Sandbox Code Playgroud)
具体来说,在调用action方法之前,文件是否已完全上传到服务器?或者是file.InputStream.Read()方法调用导致或者更确切地说等待整个文件上载.我可以对流进行部分读取,并在上传时访问文件的"块"吗?(如果在我的方法被调用之前上传了整个火,那么这都是一个没有实际意义的点.)
任何人都可以向我指出一些关于内部运作的好信息.IIS6或II7之间有什么区别吗?
谢谢,
在调用操作方法之前,需要将while文件发送到服务器.从文档中引用:
文件以MIME multipart/form-data格式上传.默认情况下,大于256 KB的所有请求(包括表单字段和上载文件)都缓冲到磁盘,而不是保存在服务器内存中.
您可以通过访问MaxRequestLength属性或通过设置Machine.config或Web.config文件中的httpRuntime元素(ASP.NET设置架构)元素的maxRequestLength属性来指定允许的最大请求大小.默认值为4 MB.
可以通过访问RequestLengthDiskThreshold属性或通过设置Machine.config中的httpRuntime元素(ASP.NET设置架构)元素的requestLengthDiskThreshold属性来指定在服务器内存中为请求缓冲的数据量(包括文件上载).或Web.config文件.
服务器内存不会在服务器上使用,但文件内容将缓冲到磁盘.一旦客户端发送了整个文件,ASP.NET管道将调用您的控制器操作,您可以以块的形式读取请求流并将其保存到另一个文件,该文件将是上载文件的最终位置.在文件上传完成之前无法调用该操作,因为文件multipart/form-data后面可能还有其他字段,在这种情况下不会分配它们.
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |