我正在使用ajax上传文件。 要传递和保存数据我正在使用FormData对象。 我想显示FormData对象的长度,但我不能这样做。
我试过这种方式
var data = new FormData();
jQuery.each($(this)[0].files, function(i, file) {
data.append('img['+i+']', file);
});
/* FIRST */
var getObjectSize = function(obj) {
var leng = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) leng++;
}
return leng;
};
var items = getObjectSize(data);
alert(items); // output 0
/* SECOND */
var items = Object.keys(data).length;
alert(items); // output 0
我该怎么做?感谢。
答案 0 :(得分:0)
当您使用console.log(formData),
时,Formdata看起来像这样FormData {
append: function
}
__proto__: FormDataappend: function append() {
[native code]
}
arguments: nullcaller: nulllength: 2name: "append"
__proto__: function Empty() {}
apply: function apply() {
[native code]
}
arguments: nullbind: function bind() {
[native code]
}
call: function call() {
[native code]
}
caller: nullconstructor: function Function() {
[native code]
}
length: 0name: "Empty"
toString: function toString() {
[native code]
}
__proto__: Object < function scope > < function scope > Global: Windowconstructor: function FormData() {
[native code]
}
__proto__: Object__defineGetter__: function __defineGetter__() {
[native code]
}
__defineSetter__: function __defineSetter__() {
[native code]
}
__lookupGetter__: function __lookupGetter__() {
[native code]
}
__lookupSetter__: function __lookupSetter__() {
[native code]
}
constructor: function Object() {
[native code]
}
hasOwnProperty: function hasOwnProperty() {
[native code]
}
isPrototypeOf: function isPrototypeOf() {
[native code]
}
propertyIsEnumerable: function propertyIsEnumerable() {
[native code]
}
toLocaleString: function toLocaleString() {
[native code]
}
toString: function toString() {
[native code]
}
valueOf: function valueOf() {
[native code]
}
get __proto__: function __proto__() {
[native code]
}
set __proto__: function __proto__() {
[native code]
}
因此,无法查询已存储到FormData
的数据。并且,official document提到了相同的内容。
所以,而不是为什么不通过直接计算文件号来获取长度
var length=$(this).get(0).files.length
答案 1 :(得分:0)
以下是 Drag and Drop files into FormData 的概念验证代码,并通过POST上传到服务器。它包含一个在上载之前检查文件大小的简单示例。我还制作了一个JS Bin,您可以在其中进行实验,看看FormData对象中的数据是否有用。
答案 2 :(得分:0)
也许你可以使用它:
value