【问题标题】:Bootstrap fileinput with C# Controller使用 C# 控制器引导文件输入
【发布时间】:2023-03-23 23:08:01
【问题描述】:

我正在尝试将 Bootstrap FileInput 与 C# 控制器一起使用。 无论我做什么,我似乎只能让控制器接受 1 个文件(即使选择了多个文件)

我的 HTML:

<form enctype="multipart/form-data" method="post">
<label>Upload Photo </label>
<input id="FilesInput" name="FilesInput" type="file" multiple>
</form>

我的 Javascript:

  $('#FilesInput').fileinput({
    language: 'eN',
    uploadUrl: '/members/UploadSerivcePhoto',
    allowedFileExtensions: ['jpg', 'png', 'gif'],
});

还有我的 MVC C# 控制器

        [HttpPost]
    public void UploadSerivcePhoto(IEnumerable<HttpPostedFileBase> FilesInput)
    {
    //  only 1 file ever gets put in FilesInput. 
    }

【问题讨论】:

  • 如果Request.Files 也只包含1 个文件,您能否签入UploadSerivcePhoto?如果是这样,请使用您的浏览器的网络开发工具,或使用 Fiddler 检查发送到您的控制器的请求(POST)是什么。
  • FileInput 不会一个一个地传输文件,有效地调用你的控制器动作多次,每个文件一次?
  • 可能重复,请检查this answer :)

标签: c# asp.net-mvc twitter-bootstrap fileinputstream


【解决方案1】:

我有同样的问题。检查@Michael 提到的Request.Files 属性,它应该包含几个文件。检查时,还应过滤掉名称为空的:

List<HttpPostedFileBase> allFiles = Enumerable.Range(0, Request.Files.Count)
    .Select(x => Request.Files[x])
    .Where(x => !string.IsNullOrEmpty(x.FileName))
    .ToList();

【讨论】:

    【解决方案2】:

    我认为它与异步上传有关,该插件似乎有一个默认选项可以并行异步发布文件,因此您将在每个帖子中收到一个文件。

    所以尝试将uploadAsync 属性设置为false。

    $('#FilesInput').fileinput({
    language: 'eN',
    uploadAsync: 'false', 
    uploadUrl: '/members/UploadSerivcePhoto',
    allowedFileExtensions: ['jpg', 'png', 'gif'],
    

    });

    这里是 Bootstrap Fileinput 的一些官方文档。 Asynchronous Upload

    【讨论】:

      猜你喜欢
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      相关资源
      最近更新 更多