1

我的内容帖子看起来像这样

内容处置:表单数据;名称=“文件[]”;文件名="许可.TXT"

我的 asp.net mvc 控制器看起来像这样

    [HttpPost]
    public JsonResult Upload(int id, IEnumerable<HttpPostedFileBase> files)
    {

        return new JsonResult { Data = files.Count(), JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }

我的文件是空的。

代码

<form enctype="multipart/form-data" method="POST" action="/Document/Upload/1" id="fileupload">
  <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
  <div class="row fileupload-buttonbar">
    <div class="span9">
      <!-- The fileinput-button span is used to style the file input field as button -->
      <span class="btn btn-success fileinput-button">
        <i class="icon-plus icon-white"></i>
        <span>Add files...</span>
        <input type="file" multiple="multiple" name="files[]">
          <button class="btn btn-primary start" type="submit">
            <i class="icon-upload icon-white"></i>
            <span>Start upload</span>
          </button>
          <button class="btn btn-warning cancel" type="reset">
            <i class="icon-ban-circle icon-white"></i>
            <span>Cancel upload</span>
          </button>
          <button class="btn btn-danger delete" type="button">
            <i class="icon-trash icon-white"></i>
            <span>Delete</span>
          </button>
          <input type="checkbox" class="toggle">
            <!-- The global progress information -->
            <div class="span5 fileupload-progress fade">
              <!-- The global progress bar -->
              <div aria-valuemax="100" aria-valuemin="0"
              role="progressbar"
              class="progress progress-success progress-striped active"
              aria-valuenow="0">
                <div style="width:0%;" class="bar"></div>
              </div>
              <!-- The extended global progress information -->
              <div class="progress-extended">&#160;</div>
            </div>
            <!-- The loading indicator is shown during file processing -->
            <div class="fileupload-loading"></div>
            <br>
              <!-- The table listing the files available for upload/download -->
              <table class="table table-striped"
              role="presentation">
                <tbody data-target="#modal-gallery"
                data-toggle="modal-gallery" class="files">
                  <tr class="template-upload fade in">
                    <td class="preview">
                      <span class="fade"></span>
                    </td>
                    <td class="name">
                      <span>LICENSE.TXT</span>
                    </td>
                    <td class="size">
                      <span>10.75 KB</span>
                    </td>
                    <td>
                      <div aria-valuenow="0" aria-valuemax="100"
                      aria-valuemin="0" role="progressbar"
                      class="progress progress-success progress-striped active">

                        <div style="width:0%;" class="bar"></div>
                      </div>
                    </td>
                    <td class="start">
                      <button class="btn btn-primary">
                        <i class="icon-upload icon-white"></i>
                        <span>Start</span>
                      </button>
                    </td>
                    <td class="cancel">
                      <button class="btn btn-warning">
                        <i class="icon-ban-circle icon-white"></i>
                        <span>Cancel</span>
                      </button>
                    </td>
                  </tr>
                  <tr class="template-upload fade in">
                    <td class="preview">
                      <span class="fade"></span>
                    </td>
                    <td class="name">
                      <span>nunitTests.config</span>
                    </td>
                    <td class="size">
                      <span>0.42 KB</span>
                    </td>
                    <td>
                      <div aria-valuenow="0" aria-valuemax="100"
                      aria-valuemin="0" role="progressbar"
                      class="progress progress-success progress-striped active">

                        <div style="width:0%;" class="bar"></div>
                      </div>
                    </td>
                    <td class="start">
                      <button class="btn btn-primary">
                        <i class="icon-upload icon-white"></i>
                        <span>Start</span>
                      </button>
                    </td>
                    <td class="cancel">
                      <button class="btn btn-warning">
                        <i class="icon-ban-circle icon-white"></i>
                        <span>Cancel</span>
                      </button>
                    </td>
                  </tr>
                  <tr class="template-upload fade in">
                    <td class="preview">
                      <span class="fade"></span>
                    </td>
                    <td class="name">
                      <span>package.bat</span>
                    </td>
                    <td class="size">
                      <span>0.14 KB</span>
                    </td>
                    <td>
                      <div aria-valuenow="0" aria-valuemax="100"
                      aria-valuemin="0" role="progressbar"
                      class="progress progress-success progress-striped active">

                        <div style="width:0%;" class="bar"></div>
                      </div>
                    </td>
                    <td class="start">
                      <button class="btn btn-primary">
                        <i class="icon-upload icon-white"></i>
                        <span>Start</span>
                      </button>
                    </td>
                    <td class="cancel">
                      <button class="btn btn-warning">
                        <i class="icon-ban-circle icon-white"></i>
                        <span>Cancel</span>
                      </button>
                    </td>
                  </tr>
                  <tr class="template-upload fade in">
                    <td class="preview">
                      <span class="fade"></span>
                    </td>
                    <td class="name">
                      <span>README.TXT</span>
                    </td>
                    <td class="size">
                      <span>1.16 KB</span>
                    </td>
                    <td>
                      <div aria-valuenow="0" aria-valuemax="100"
                      aria-valuemin="0" role="progressbar"
                      class="progress progress-success progress-striped active">

                        <div style="width:0%;" class="bar"></div>
                      </div>
                    </td>
                    <td class="start">
                      <button class="btn btn-primary">
                        <i class="icon-upload icon-white"></i>
                        <span>Start</span>
                      </button>
                    </td>
                    <td class="cancel">
                      <button class="btn btn-warning">
                        <i class="icon-ban-circle icon-white"></i>
                        <span>Cancel</span>
                      </button>
                    </td>
                  </tr>
                </tbody>
              </table>
            </br>
          </input>
        </input>
      </span>
    </div>
  </div>
</form>
4

3 回答 3

1

Your file input element is not named correctly:

<input type="file"  multiple="multiple" name="files" id="file1" />
<input type="file"  multiple="multiple" name="files" id="file2" />
<input type="file"  multiple="multiple" name="files" id="file3" />
<input type="file"  multiple="multiple" name="files" id="file4" />
<input type="file"  multiple="multiple" name="files" id="file5" />

Edit, the name cannot be files[] as it is not valid. If you want to include multiple file upload elements simply increment the id.

于 2012-06-11T20:45:14.963 回答
0

编辑:

实际上“files[]”不能用于表示数组。所以:

  1. 正如 Jesse 所说,将您的 HTML 更改为 Jesse 建议的内容,确保 name=" files "

  2. 您是否尝试过将控制器更改为:

    public JsonResult Upload(int id, IEnumerable<HttpPostedFileBase> files)
    

    {

    return new JsonResult { Data = files.Count(), JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    

    }

输入名称是使用模型绑定器映射的,因此您需要使用正确的名称。我看到你在 html中使用files[]作为你的名字。

编辑:

查看 Fiddler 以查看发布的内容。

也可以在这里阅读:

http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx

于 2012-06-11T20:39:06.130 回答
0

Seems like the only way to do it is as fallows

for(int i = 0; i < Request.Files.Count; i++)
{
    var file = Request.Files[i];

    //file.COMMAND
}
于 2012-06-18T22:04:24.280 回答