我正在尝试创建一个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参数,这使我回到了上述问题。
我猜想一种方法是根据文件输入的更改立即上传文件,但是由于人们应该能够编辑其文件名并能够取消文件的上传,所以这远非理想。
所以我的问题是; 是否可以让新文件附加到文件输入中,而不是完全覆盖文件输入,还是有另一种方法可以实现这种目标?
很抱歉,如果某个地方隐藏着类似的问题,但是我自己却找不到合适答案的答案。
正如我在评论中提到的那样,您每次用户选择文件时都可以创建一个新输入…
jQuery示例:
$(document).on('change','input[type="file"][multiple]',function(){ var $this = $(this); $this.clone().insertAfter($this); $this.hide(); });
当然,您不必使用jQuery,但这只是解释我的意思的最简单方法。