如果一个用户选择了多个文件,需要按照用户选择的优先级排序(比如facebook)。 FileList 需要取决于用户顺序。
这是一个示例代码:
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
当你选择第二个文件时,它总是改变顺序,它比第一个文件靠上。
请检查图像
当我从第一张图片中选择上面的第二张图片时,名称顺序发生了变化。并且 FileList 也发生了变化。请帮助我获得用户选择的订单。谢谢。
(我也尝试过从文件夹中随机选择许多图像,但最终结果是自动排序的)
最佳答案
您正在使用操作系统提供的文件选择器,这就是它在 Windows 中的工作方式。您无法更改其行为,并且在其他操作系统(Linux、MacOS)上可能有所不同。如果顺序对于您的目的来说是必不可少的,那么您可以实现自己的自定义控件,但这样您就失去了重用用户熟悉的便捷内置功能的好处。
另一种方法是允许您的用户在单击打开
并且您已处理输入后自定义顺序。这将让他们使用熟悉的界面但可以选择,但可以灵活控制顺序。如果您这样做,那么我建议首先按文件名对它们进行一致的排序,以便操作在操作系统之间保持一致。
关于javascript - HTML 输入文件按用户选择顺序多重排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58694968/