用户可以通过两种可能的方式启动文件传输:拖放到小部件,或使用多文件输入按钮。我喜欢如何使用多文件输入,它将用智能的“选择 8 个文件”或其他内容替换文件名字符串。
为此,必须填充输入。我不想从 drop 事件中实际创建 xhr2 对象,而是只想将其 fileList 传递到输入元素中,并通过输入的“change”事件触发 xhr2。
这是一些骨架代码(jQuery 用于事件绑定,但 addListener 应该工作相同):
domNode.defaultUI.on("drop", "#progOver", function(evt) {
evt.preventDefault();
evt.stopPropagation();
function sendFiles() {
var fileList = evt.originalEvent.dataTransfer.files;
document.getElementById('files-upload').files = fileList;
}
if (someCondition) {
sendFiles();
}
});
domNode.defaultUI.on("change", '#files-upload', function(evt) {
console.log(evt.target.files); // fileList object in Chrome, empty (prototype) fileLIst in Firefox
});
我知道 fileList 对象本身是只读的,我怀疑 Chrome 的设计是说“是的,那个 fileList 没有被篡改,让我们允许它”,而 Firefox 的设计是说“哇哦,公共汽车。你是吗?”试图用某个对象更新我可爱的安全文件输入?我不知道那个臭东西来自哪里,拒绝!”
所以问题有两个:
我的上述假设正确吗?这就是为什么我无法使输入的“files”属性等于 fileList 的原因吗?
是否有其他方法(而不是仅仅尝试将值添加到属性)来更新输入的文件属性?能够并行更新多个文件输入节点真是太好了。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)