gpt4 book ai didi

javascript - 从删除的 FileList 中删除元素

转载 作者:行者123 更新时间:2023-11-28 00:11:12 24 4
gpt4 key购买 nike

我有一个函数可以处理我页面上的拖放文件:

function createDropHandlers() {
var target = document;
if (target === null) {
return false;
}

// attach the 'dragover' event to the container
target.addEventListener('dragover', function(event) {
event.preventDefault();
}, true);

// attach the 'drop' event to the container
target.addEventListener('drop', function(event) {
event.preventDefault();
var files = event.dataTransfer.files;

// if (files.length > 3)
// do something like
// files.slice(files.length-3, files.length);

for (var i = 0; i < files.length; i++) {
processFile(files[i]);
// ...
}
}, true);
}

我想做的是在我的 for 循环之前(以及在以任何方式“处理”文件之前)检查是否有超过 3 个文件被拖动,如果是这样,就将“数组”到最后 3 个元素。我知道 FileList 是只读的,所以我不确定我在这里有什么选择来实现这一目标......
我不会上传文件,在“处理”它们之后,我将不再需要任何 File 对象。我需要做的就是检查文件是否是音频文件,从中读取一些元数据并在页面上显示元数据。

最佳答案

slice() 是 Array 原型(prototype)中的一个方法。虽然它返回一个新数组,但它可能不在 FileList 原型(prototype)中。您可以使用 Array.prototype.slice 方法并将其应用于文件列表:

Array.prototype.slice.call( fileList ); //will return an array-copy of the filelist
Array.prototype.slice.call( fileList, 0, 3 ); //Then simply use the slice arguments at your convenience

您也可以在参数上使用(并且会经常在 js 库代码中看到)这个技巧。请注意,slice 不会像 splice() 那样修改原始对象。

你可以查看https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice#Array-like有关 MDN 的解释。

关于javascript - 从删除的 FileList 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com