格式的关键是数组
FormData key as array
我正在尝试使用 FormData html5 api 设置多文件上传。
问题是我无法删除 FormData 键上的数组索引。
例如:
if(editor.frmData){
editor.frmData.append( 'upload[]', files[0] );
}else{
editor['frmData']=new FormData();
}
这是我 select 一个文件时执行的代码。我 select 不止一个文件并且在服务器上 (php) , $_FILES 是数组与数组。
例如:
Array
(
[upload] => Array
(
[name] => Array
(
[0] => Screenshot from 2017-02-21 16:04:36.png
[1] => 20170314_124241.jpg
[2] => mob geografica.png
)
[type] => Array
(
[0] => image/png
[1] => image/jpeg
[2] => image/png
)
[tmp_name] => Array
(
[0] => /tmp/phpVQEmFd
[1] => /tmp/phpE5xKUf
[2] => /tmp/php0f4cbi
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
)
[size] => Array
(
[0] => 1088612
[1] => 1324555
[2] => 410839
)
))
我的问题是如何删除 formData 中的条目,例如:
editor.frmData.delete('upload[1]');
或
editor.frmData.delete('upload["name"][1]');
提前致谢
你不能。
有 set to set a key, and also append 会做同样的事情,而不会覆盖同名的现有密钥。
但是set在delete中有它的反义词,append没有反义词。
唯一的方法是删除密钥,然后重写您要保留的所有值。
您可以使用此函数删除同名的多个值之一:
function formDataDelete(frmData, name, index) {
var keep = frmData.getAll(name);
keep.splice(index, 1);
frmData.delete(name);
keep.forEach( value => frmData.append(name, value) );
}
它只是删除了名称(以及与之关联的所有值),然后再次添加所有值,但位于指定索引处的值除外。
我正在尝试使用 FormData html5 api 设置多文件上传。 问题是我无法删除 FormData 键上的数组索引。 例如:
if(editor.frmData){
editor.frmData.append( 'upload[]', files[0] );
}else{
editor['frmData']=new FormData();
}
这是我 select 一个文件时执行的代码。我 select 不止一个文件并且在服务器上 (php) , $_FILES 是数组与数组。 例如:
Array
(
[upload] => Array
(
[name] => Array
(
[0] => Screenshot from 2017-02-21 16:04:36.png
[1] => 20170314_124241.jpg
[2] => mob geografica.png
)
[type] => Array
(
[0] => image/png
[1] => image/jpeg
[2] => image/png
)
[tmp_name] => Array
(
[0] => /tmp/phpVQEmFd
[1] => /tmp/phpE5xKUf
[2] => /tmp/php0f4cbi
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
)
[size] => Array
(
[0] => 1088612
[1] => 1324555
[2] => 410839
)
))
我的问题是如何删除 formData 中的条目,例如:
editor.frmData.delete('upload[1]');
或
editor.frmData.delete('upload["name"][1]');
提前致谢
你不能。
有 set to set a key, and also append 会做同样的事情,而不会覆盖同名的现有密钥。
但是set在delete中有它的反义词,append没有反义词。
唯一的方法是删除密钥,然后重写您要保留的所有值。
您可以使用此函数删除同名的多个值之一:
function formDataDelete(frmData, name, index) {
var keep = frmData.getAll(name);
keep.splice(index, 1);
frmData.delete(name);
keep.forEach( value => frmData.append(name, value) );
}
它只是删除了名称(以及与之关联的所有值),然后再次添加所有值,但位于指定索引处的值除外。