2017-04-12 63 views
2

我想设置一个多文件上传,使用FormData html5 api。 问题是我无法删除FormData键上的数组的索引。 ex:FormData键作为数组

if(editor.frmData){ 
     editor.frmData.append('upload[]', files[0]); 
    }else{ 
     editor['frmData']=new FormData(); 
    } 

这是我选择文件时执行的代码。我选择了多个文件并在服务器上(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前一个条目:提前

回答

-1

你可以使用这个功能来删除许多值中的一个相同名称:再次

function formDataDelete(frmData, name, index) { 
    var keep = frmData.getAll(name); 
    keep.splice(index, 1); 
    frmData.delete(name); 
    keep.forEach(value => frmData.append(name, value)); 
} 

它只是删除(与之相关联,因此所有的值)的名称,并增加了所有值,除了一个是在指定的指数。

+0

对不起trote。这是一个宏伟的解决方案 –

+0

不客气。不要忘记[将适合你的答案标记为已接受](http://stackoverflow.com/help/someone-answers)。不幸的是,你只能接受一个。但你可以[upvote]几个(http://stackoverflow.com/help/privileges/vote-up)。 – trincot

+0

我如何重命名['name'] [index] –

1

editor.frmData.delete('upload[1]'); 

editor.frmData.delete('upload["name"][1]'); 

谢谢你不能。

set设置密钥,也append这将做同样的事情,而不会覆盖相同名称的现有密钥。

但是在delete中却有相反的,追加没有相反的。

要做到这一点的唯一方法是删除密钥,然后重写所有你想保留的值。

+0

正如我在想...感谢Quentin –