gpt4 book ai didi

asp.net - IIS asp.net mvc 部分?上传文件

转载 作者:行者123 更新时间:2023-12-02 11:09:00 26 4
gpt4 key购买 nike

鉴于以下代码非常通用,我希望有人能告诉我一些幕后发生的事情......

[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);
}

具体来说,在调用我的操作方法之前文件是否已完全上传到服务器?或者是 file.InputStream.Read() 方法调用导致或等待整个文件上传。我可以对流进行部分读取并在上传文件时访问文件的“ block ”吗? (如果在调用我的方法之前上传了整个火灾,那么这一切都是没有意义的。)

任何人都可以向我指出一些有关内部运作的好信息吗?这里IIS6和II7有什么区别吗?

谢谢

最佳答案

在调用action方法之前,需要将while文件发送到服务器。引用自documentation :

Files are uploaded in MIME multipart/form-data format. By default, all requests, including form fields and uploaded files, larger than 256 KB are buffered to disk, rather than held in server memory.

You can specify the maximum allowable request size by accessing the MaxRequestLength property or by setting the maxRequestLength attribute of the httpRuntime Element (ASP.NET Settings Schema) element within the Machine.config or Web.config file. The default is 4 MB.

The amount of data that is buffered in server memory for a request, which includes file uploads, can be specified by accessing the RequestLengthDiskThreshold property or by setting the requestLengthDiskThreshold attribute of the httpRuntime Element (ASP.NET Settings Schema) element within the Machine.config or Web.config file.

服务器上不会消耗服务器内存,但文件内容将缓冲到磁盘。一旦客户端发送了整个文件,ASP.NET 管道将调用您的 Controller 操作,您可以分块读取请求流并将其保存到另一个文件,该文件将成为上传文件的最终位置。在文件上传完成之前无法调用该操作,因为 multipart/form-data 中可能有一些其他字段位于文件之后,在这种情况下不会分配它们。

关于asp.net - IIS asp.net mvc 部分?上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com