2016-10-04 7 views
0

入力ファイルから選択したファイルをフォーム作成時に新しく作成した 'formData'に配置しようとしています。 入力ファイルから選択したファイルを取得します

は、最初に私は、フォーム

<form action="/upload.php"> 
    <fieldset> 
     <input type="file" name="file"> 
     <input type="text" name="full_name"> 
    </fieldset> 
    <button>SEND</button> 
</form> 

、その後、スクリプト

$(document).ready(function(){ 
    $("form").submit(function(e){ 
     e.preventDefault(); 
     var dis = $(this),fdata = new FormData(); 
     fdata.append('file',dis.find('input[type="file"]').files[0]); 
     fdata.append('full_name',dis.find('input[name="full_name"]').val()); 
    }); 
}); 

を持っているが、それはアイデア、私にすべてのヘルプをこのエラー

Uncaught TypeError: Cannot read property '0' of undefined

をしてくださいできますか?

+1

fdata.append( 'ファイル'、dis.find( '入力[タイプ= "ファイル"]')[0] .files [0])を使用します。 –

+0

ajaxを使用してファイルをアップロードしようとしていますか、選択した画像をページに表示したいだけですか? –

答えて

1

を削除し、次の

fdata = new FormData($(this)[0]); 

を試してみて、彼らはfilesプロパティので、あなたが取得しているを持っていない入力としてフォーム要素を受け入れますエラー、基本となるDOM要素を取得してプロパティにアクセスする必要があります。そう

dis.find('input[type="file"]')[0].files[0] 

代わりに

dis.find('input[type="file"]').files[0] 
1

いるFormDataは

dis.find('input[type="file"]')戻りjQueryオブジェクトので追記

+1

なぜ簡単ではない '新しいFormData(this)'? – Satpal

+0

@Satpalでも動作します – madalinivascu

関連する問題