2016-10-04 36 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

由於dis.find('input[type="file"]')回報jQuery對象和他們沒有files財產因此你所得到的錯誤,您需要獲取底層DOM元素然後訪問該屬性。因此,使用

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

代替

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

FORMDATA接受爲輸入表單元素

請嘗試以下

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

刪除追加

+1

爲什麼不簡單'新FormData(this)'? – Satpal

+0

@Satpal也可以工作 – madalinivascu