繁体   English   中英

如何从JavaScript中的File-API对象中删除属性?

[英]How to remove a property from a File-API object in JavaScript?

我正在使用JavaScript“文件”api来读取有关将要上传的图像的信息,以便在实际上传发生之前根据此处的演示( JavaScript文件api )生成预览缩略图。

使用具有“多个”属性的文件输入,可以同时选择一个或多个文件,如下所示: <input type="file" id="imageFiles" name="userfile[]" multiple />

一旦用户选择了图像,我用firebug检查元素,我可以在DOM中看到“files”对象包含有关所选每个图像的信息。

“文件”对象将包含与选择文件一样多的属性,每个属性都包含有关每个图像的信息。 我只能将“文件”对象描述为关联数组,因为每个属性本身就是一个对象。

我想要做的是能够从“文件”对象中删除给定的属性,从而删除将要上传的图像之一,而无需再次选择图像。

到目前为止,这是我尝试过的,它不起作用:

var getAllFiles = document.getElementById('imageFiles');
var allImages = getAllFiles.files; // returns an object with X properties
delete allImages[X]; // "X" is whatever property key I'm passing in

我已经尝试了“splice()”方法,但它也不起作用。

非常感谢你。

.files是只读的,因此您无法修改它。 您可以将文件本身提取到一个数组,但是你不能使用普通的表单上传,你需要通过二进制XHR上传它们

您可以使用以下方法将文件解压缩到普通数组:

var files = [].slice.call( this.files );
files.splice( 1, 1 ); //whatever works for normal array

您也可以在输入中首先放置accept="image/*"

<input type="file" id="imageFiles" accept="image/*" name="userfile[]" multiple />

我认为你理解这些在IE或没有文件API的任何其他浏览器中都不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM