【问题标题】:Can a html5 file input remember the previous selected files?html5文件输入能记住之前选择的文件吗?
【发布时间】:2015-06-19 18:33:22
【问题描述】:

我正在尝试创建一个 AJAX Multi-Upload,它将获取表单/文件输入中的所有选定文件并通过我的 AJAX PHP 控制器上传。对于这个过程,我使用 jQuery (1.11.3) 和 jQuery-Form 插件。

除了一个非常烦人的问题外,一切正常;当用户使用文件输入选择几个文件,然后继续选择另外几个文件时,先前选择的文件将从“files[]”数组中删除。以下是我的 HTML5 文件输入:

<input id="multi-upload" type="file" name="files[]" multiple>

我的问题基本上是是否可以只附加新选择的文件,而不是覆盖旧的“文件[]”。

我试图通过在我的 JavaScript 中创建一个数组来解决这种情况,它会在文件输入更改时将新文件推送到数组中,但这只会导致在发送文件时收到“blob”错误不幸的是,直接通过 AJAX 并不能很好地工作。

所以我所知道的唯一可行的方法是发送表单数据并使用我的控制器获取 $_FILES 参数,这让我回到了上述问题。

我想一种方法是在文件输入发生更改时立即上传文件,但由于人们应该能够编辑他们的文件名并能够取消上传文件,这远非理想。

所以我的问题是; 是否可以让新文件附加到文件输入而不是完全覆盖文件输入,或者是否有其他方法可以达到这种目标?

很抱歉,如果某处隐藏了类似的问题,但我自己无法找到任何已正确回答的答案。

【问题讨论】:

  • 您可以简单地在选择文件后隐藏文件输入,然后创建一个新输入。
  • 哇,我现在因为没想到​​这样做而感到愚蠢......我会尝试一下并提供更新。

标签: jquery ajax html


【解决方案1】:

正如我在评论中提到的,您可以在每次用户选择文件时创建一个新输入...

jQuery 示例:

$(document).on('change','input[type="file"][multiple]',function(){
   var $this = $(this);
   $this.clone().insertAfter($this);
   $this.hide();
});

当然,您不必使用 jQuery,但它只是解释我的意思的最简单方法。

【讨论】:

  • 非常有帮助,即使是在 2018 年 :-) 遗憾的是 w3 人无法将文件输入附加,或者至少内置了 durn 选项。
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2011-03-17
相关资源
最近更新 更多