Failo įkėlimas per jQuery, pateikiamas „FormData“ objektas ir failo pavadinimas, GET užklausa

Naudoju jQuery scenarijų failams įkelti į naują puslapį. Tai veikia kažkaip, bet problema ta, kad ji siunčia formos duomenis kaip object FormData .

Čia yra kodas:

 $('#submit').click(function () { var formData = new FormData($(this).form); $.ajax({ url: '/test/file_capture', //Ajax events beforeSend: function (e) { alert('Are you sure you want to upload document.'); }, success: function (e) { alert('Upload completed'); }, error: function (e) { alert('error ' + e.message); }, // Form data data: formData, //Options to tell jQuery not to process data or worry about content-type. cache: false, contentType: false, processData: false }); return false; }); 

HTML dalis:

 <form enctype="multipart/form-data"> <input type="file" id="image" name="image" accept="Image/*" /> <input type="submit" id="submit" name="" value="Upload" /> </form> 

Tačiau sukurta nuoroda yra tokia:

?

HTTP: // vietinis: 4965 / test / file_capture [objektas% 20FormData] _ = 1386501633340

Kas neturi vaizdo pavadinimo ar kito prie jo pridedamo dalyko. Kas man trūksta? Nepaisant to, kad nėra klaidos, ir prašymas pateikiamas, rodomas įspėjimas apie visą apkrovą.

5
08 дек. nustatė Afzaal Ahmad Zeeshan 08 d. 2013-12-08 14:24 '13, 14:24, 2013-12-08 14:24
@ 3 atsakymai

turėtumėte siųsti tik failą - ne visą formą

 var fileInput = $('#image'); var file = fileInput.files[0]; var formData = new FormData(); formData.append('file', file); 

PAKEITIMAS

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <form enctype="multipart/form-data"> <input type="file" id="image" name="image" accept="Image/*" /> <input type="submit" id="submit" name="" value="Upload" /> </form> <script> $('#submit').click(function (event) { event.preventDefault() var file = $('#image').get(0).files[0]; var formData = new FormData(); formData.append('file', file); $.ajax({ url: '/test/file_capture', //Ajax events beforeSend: function (e) { alert('Are you sure you want to upload document.'); }, success: function (e) { alert('Upload completed'); }, error: function (e) { alert('error ' + e.message); }, // Form data data: formData, type: 'POST', //Options to tell jQuery not to process data or worry about content-type. cache: false, contentType: false, processData: false }); return false; }); </script> 
11
08 дек. atsakymas pateikiamas 08 d. 2013-12-08 14:34 '13, 14:34, 2013-12-08 14:34

Turite aiškiai gauti failą.

 var image = $('#image')[0].files[0]; 

Tada pridėkite failą į formąData:

 formData.append( image ); 

Štai pavyzdys, kaip tai padaryti:

  var image = $('#image')[0].files[0]; if( window.FormData ) { formdata = new FormData(); formdata.append( 'image', image ); formdata.append( 'action', 'save-image' ); $.ajax({ url: 'controller/handler', type: 'POST', data: formdata, processData: false, contentType: false, success: function( res ) { // Handle it. } }); } } 
7
08 дек. Atsakymą pateikė Fernando Basso 08 d. 2013-12-08 14:38 '13, 14:38, 2013-12-08 14:38

Failų negalima įkelti naudojant GET metodą. Turite naudoti POST .

 $.ajax({ method: 'POST', url: '/test/file_capture', // ... 

Be to, jums reikia HTML 5, kad galėtumėte įkelti failus (nors „Firefox“ gali leisti jį naudoti su ankstesniu „XHTML“).

0
08 дек. Atsakymą pateikė Mike DeSimone 08 dec. 2013-12-08 15:20 '13, 15:20, 2013-12-08 15:20

Kiti klausimai apie arba Užduoti klausimą