【问题标题】:Uploading Multiple Files - MVC..is there a total file size limit?上传多个文件 - MVC..是否有总文件大小限制?
【发布时间】:2013-09-26 20:47:26
【问题描述】:

我有一个表单,用户可以从中添加房产列表。除了用户必须输入的数据外,用户还可以上传许多图像。我正在使用 HTML5 多重属性来允许用户一次上传多个文件。

由于某种原因,我在上传一张图片时总是会触发 HttpPost Add 方法。但是,当我尝试上传多张图片时,该方法不会触发。到目前为止,我没有收到任何错误,所以我不确定我的实现有什么问题。

HTML

@using (Html.BeginForm("AddProperty", "User", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <legend>Property</legend>

        <div class="editor-label">
            Title
        </div>
        <div class="editor-field">
            <input type="text" name="title" />
        </div>

        <div class="editor-label">
            Description
        </div>
        <div class="editor-field">
            <input type="text" name="desc" />
        </div>

        @* ... more input fields... *@

        <div class="editor-label">
            Images
        </div>
        <div class="editor-field">
            <input type="file" multiple="multiple" name="file" />
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

控制器

[HttpPost]
public ActionResult AddProperty(FormCollection form, IEnumerable<HttpPostedFileBase> file)
{
    Property p = new Property();
    p.Title = form["title"];
    p.Description = form["desc"];

    // ... setting Property fields

    new PropertiesBL().AddProperty(p);

    for (int i = 0; i < file.Count(); i++)
    {
        // ... loop and save uploaded file(s)
    }
}

任何帮助将不胜感激。

编辑 - 进一步测试

为了测试文件上传,我创建了一个新视图,其中只有一个包含文件上传器的表单。我试过上传不同的文件类型。我注意到的是,当上传例如 10 个文档时,Upload 方法被触发。但是当尝试上传 3 个(大)图像时,它没有触发。我认为上传的字节总数存在某种限制……不过我不确定这是否有意义。

简单测试

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" multiple="multiple" name="images" />
    <input type="submit" value="Upload" />
</form>

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> images)
{
    return RedirectToAction("Index");
}

我也尝试过分别上传多个文件。当我尝试上传 3 张大图片(每张图片大约 2 MB)时,该方法没有触发。我几乎可以肯定这是与某种总最大文件大小有关的问题。

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" name="image_1" />
    <input type="file" name="image_2" />
    <input type="file" name="image_3" />
    <input type="submit" value="Upload" />
</form>

【问题讨论】:

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


    【解决方案1】:

    问题在于可以上传的最大字节数。这可以通过在 web.config 文件中设置 maxRequestLength 来更改。

    参考

    How to upload large files using MVC 4?

    代码:

    <system.web>
    
        <httpRuntime targetFramework="4.5" 
            maxRequestLength="2147483647"
            executionTimeout="1600" 
            requestLengthDiskThreshold="2147483647" />
       ....
    
    </system.web>
    

    链接问题的答案在&lt;system.web&gt; 标签下列出了以下内容,但我只能将其添加到&lt;system.webServer&gt; 标签中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多