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

标签 javascript

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

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

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

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

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

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

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 是只读的,所以你不能修改它。您可以将文件本身提取到一个数组中,但是您不能使用正常的表单上传,您需要通过 binary 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 的浏览器中是行不通的。

关于javascript - 如何从 JavaScript 中的 File-API 对象中删除属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962925/

相关文章:

javascript - D3.js Stream Graph json数据格式

javascript - 谷歌地图正在后台加载但未显示在页面上

javascript - 当您将窗口调整为任意大小时,如何使缩放框的图像和文本成比例?

javascript - CLI NodeJS(并发、回调、.methods)

javascript - 通过控件旋转组后,获取 fabricjs 中组中对象相对于 Canvas 的位置

javascript - 如何使只有一个下拉列表被点击下拉?

javascript - Node js : how to export a previously exported function to make it visible

javascript - 如何获取函数内部调用的变量值

php - 你将如何在 php 5.4 中实现一个基本的文件上传进度条?

javascript - 如何从字符串值调用作用域上的函数