2017-04-12 5 views
2

J'essaie de configurer un téléchargement de fichiers multiples, en utilisant FormData html5 api. Le problème est que je ne peux pas supprimer l'index d'un tableau qui se trouve sur la clé FormData. ex:Clé FormData en tant que tableau

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

Voici le code i exécute lorsque je sélectionne un fichier. Je sélectionne plus d'un fichier et sur le serveur (php), $ _FILES est un tableau avec des tableaux. ex:

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 
       ) 
     )) 

Ma question est de savoir comment puis-je supprimer une entrée dans formData ex:

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

ou

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

Merci à l'avance

Répondre

-1

Vous pouvez utiliser cette fonction pour supprimer l'une des nombreuses valeurs pour le même nom:

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

Il supprime simplement le nom (et donc toutes les valeurs qui lui sont associés), et ajoute toutes les valeurs à nouveau, à l'exception du celui qui était à l'index indiqué.

+0

Désolé trvot downvote. C'est une solution magnifique –

+0

De rien. N'oubliez pas de [marquer la réponse qui vous convient le mieux] (http://stackoverflow.com/help/someone-answers). Malheureusement, vous ne pouvez en accepter qu'un. Mais vous pouvez [upvote] (http://stackoverflow.com/help/privileges/vote-up) plusieurs. – trincot

+0

Comment renommer le nom ['name'] [index] –

1

Vous ne pouvez pas.

Il existe set pour définir une clé, ainsi que append qui fera la même chose sans écraser la clé existante portant le même nom.

Mais l'ensemble a son opposé dans delete, append n'a pas de contraire. La seule façon de le faire est de supprimer la clé, puis de réécrire toutes les valeurs que vous souhaitez conserver.

+0

comme je le pensais ... merci Quentin –