在javascript中拖放文件时,文件添加到DataTransfer FileList的顺序是什么?

时间:2016-02-04 22:45:22

标签: javascript html5 drag-and-drop fileapi

我正在构建一个Web应用程序,用户将图像拖到浏览器中并将其删除以上传它们。问题是,我希望文件的上传顺序与他们拖动文件夹的顺序相同。看起来ondrop事件的DragEvent.DataTransfer.FileList中的文件是随机排序的。这个订单是如何确定的?我是否可以确定用户拖动文件夹中文件的原始顺序?

2 个答案:

答案 0 :(得分:2)

经过测试后,我找到了答案。这些文件与文件夹的顺序相同,但是从您拖入的实际单个文件开始偏移。因此,如果您突出显示5个文件并通过单击第三个文件拖动它们并拖动,则顺序将为文件3,文件4,文件5,文件1,文件2.至于我的第二个问题,似乎找到正确的顺序将取决于知道拖入的文件的偏移量。我还没有找到确定这个的方法。

答案 1 :(得分:0)

创建a codepen以进一步研究,使用promises,如建议的那样,处理嵌套目录结构:

df <- data.frame(abc_alpha, abc_beta, abc_char, xyz_alpha, xyz_beta, xyz_char)

正如Andrew指出的那样,当通过拖放和dataTransfer导入一组选定文件时,文件将重新排序,首先拖动文件,然后换行到实际的第一个文件。在Chrome和Firefox中确认了这一点。

嵌套目录变得更加复杂。子目录中的文件顺序丢失,文件按字母顺序放置,最后是相同级别的子目录。

我担心这些是作为实验技术的dataTransfer对象的当前限制。