小编典典

html5文件输入可以记住以前选择的文件吗?

ajax

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

除了一个非常烦人的问题,其他所有东西都可以正常工作。当用户使用文件输入选择了几个文件,然后继续选择另外两个文件时,先前选择的文件将从“ files
[]”数组中删除。以下是我的HTML5文件输入:

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

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

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

因此,我知道唯一可行的选择是通过发送表单数据并使用Controller来获取$ _FILES参数,这使我回到了上述问题。

我猜想一种方法是根据文件输入的更改立即上传文件,但是由于人们应该能够编辑其文件名并能够取消文件的上传,所以这远非理想。

所以我的问题是; 是否可以让新文件附加到文件输入中,而不是完全覆盖文件输入,还是有另一种方法可以实现这种目标?

很抱歉,如果某个地方隐藏着类似的问题,但是我自己却找不到合适答案的答案。


阅读 322

收藏
2020-07-26

共1个答案

小编典典

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

jQuery示例:

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

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

2020-07-26