2017-04-12 3 views
2

FormData html5 apiを使用して、複数のファイルのアップロードをセットアップしようとしています。 問題は、FormDataキー上にある配列のインデックスを削除できないことです。 例: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の元のエントリを削除することができます:事前に

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

または

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

おかげ

答えて

-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

申し訳ありません。これはすばらしい解決策です –

+0

あなたは大歓迎です。 [あなたに合った答えをマークしてください](http://stackoverflow.com/help/someone-answers)を忘れないでください。残念ながら、あなたは1つしか受け入れることができません。しかし、あなたはいくつか(http://stackoverflow.com/help/privileges/vote-up)いくつかアップルボードすることができます。 – trincot

+0

名前[[名前]] [インデックス] –

1

あなたがすることはできません。

鍵を設定する鍵はsetであり、既存の鍵を同じ名前で上書きすることなく同じことをする鍵はappendです。

ただし、逆の設定はdeleteですが、appendには反対ではありません。

唯一の方法は、キーを削除し、保持したいすべての値を書き換えることです。

あなたは、同じ名前のために多くの値のいずれかを削除するには、この機能を使用することができ
+0

私は考えていた...ありがとうクエンティン –

関連する問題