在.net MVC中上传文件

时间:2013-02-19 14:16:49

标签: asp.net-mvc file-upload asp.net-mvc-4

我正在使用fineuploader上传文件。一切都适用于200MB以下的文件。一切都失败了。创建一个新文件,但它是空的(表示0kb)

已经修改了我的web.config以允许最多500mb的上传。但似乎没有帮助。

的web.config:

  <security>
      <requestFiltering>
          <requestLimits maxAllowedContentLength="524288000" />
      </requestFiltering>
  </security>

<httpRuntime targetFramework="4.5" maxRequestLength="512000" executionTimeout="900" requestLengthDiskThreshold="512000" />

控制器:

[HttpPost]
public ActionResult Upload(string qqfile)
{
    try
    {
        Stream stream = Request.Files.Count > 0 ? Request.Files[0].InputStream : Request.InputStream;

        string filePath = Path.Combine(@"C:\Temp\100", qqfile);
        using (Stream file = System.IO.File.OpenWrite(filePath))
        {
            stream.CopyTo(file);
        }
....

为什么我不能上传超过200MB的文件?

2 个答案:

答案 0 :(得分:0)

首先想到的是IIS中的限制。在IIS7中的“集成模式”之前,必须处理IIS-MetaBase以设置IIS属性。

如果您在“集成模式”下运行网站或使用VS开发网络服务器(基于Cassini),它可能会有效,如果您在“经典模式”下运行生产,它将不会使用集成配置和回到元数据库。如果是,并且您尚未编辑元数据库,那么通过默认元数据库上传限制的任何上传都将失败。

从您的代码/配置/问题我无法确定您遇到问题的网站运行的模式 - 这可能对您的问题至关重要 - 所以请提供这些详细信息。

答案 1 :(得分:0)

想出来: 这是一个web.config设置:

的web.config:

<httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="90" requestLengthDiskThreshold="2147483647" />

 <system.webServer>
      <security>
          <requestFiltering>
              <requestLimits maxAllowedContentLength="4294967295" />
          </requestFiltering>
      </security>
  </system.webServer>

感谢Yasser指出我正确的方向