jQuery – получение массива $ _FILES с использованием $ .post

Я пытаюсь отправить форму через jQuery. Моя форма содержит поля и файл, который необходимо загрузить. Он имеет тип ENCTYPE="multipart/form-data" .

Я могу получить все свои значения поля, используя: post = $('#myForm').serialize(); Но как мне получить массив $_FILES ? Мне нужно это для обработки загруженного файла.

Возможно ли это с помощью jQuery, и если да, то как? Или мне нужно использовать специальный плагин для загрузки для jQuery?

Форма jquery – лучший способ сделать это, вы можете добавить ее в любую нормальную форму,

 <form method="post" action="URL"> <input type="file" name="file"> <input type="text" name"text"> <input type="submit"> </form> <script type="text/javascript"> $(document).ready(function() { $(form).ajaxForm(); }) </script> 

будет работать так, как ожидалось, но с ajax.

http://malsup.com/jquery/form/#code-samples

Вы не можете загружать файлы через javascript.

Проверьте этот связанный вопрос:
Можно ли использовать Ajax для загрузки файлов?

По сути, два самых популярных способа «подделки» AJAX для загрузки файлов – это использовать Flash-плагин, такой как SWFUpload, или передать форму в скрытый iframe, обрабатывающий запрос.

Форма содержит входной файл, но отсутствует метод = POST и enctype = multipart / form-data в форме. Файл не будет отправлен

Использовать FormData

 <form> <label for="imageToSend">Cargar imagen a la galeria</label> <input type="file" name="imageToSend" id="imageToSend" value="Cargar imagen" /> </form> <script> $('#imageToSend').on('change',function(event){ var dialog = $('#dialog'); var Data = new FormData(); Data.append('imageToSend',$('#imageToSend')[0].files); $(this).val('');//Clear input file $.ajax({ url: "/upload", data: Data, processData: false, contentType: false, type:'POST', success: function(data){ if(data.success){ //success handler }else if(!data.success){ //error backend handler } }, error: function(data){ //error handler Ej:404 status } }) }); </script> 

Если вы можете управлять средой, например, вы пишете приложение администратора для интрасети, в котором вы рекомендуете браузер, тогда реальная загрузка файлов AJAX возможна с Firefox 3 и выше. Во всех остальных случаях способ обхода iframe или загрузчик на основе Flash – это путь.

Это возможно, но не работает в Google Chrome) Посмотрите!

 ... <form method='post' enctype='multipart/form-data'> <input type="file" id="imf" name="imf"/> <input type="button" id="Save"/> </form> ... $("#Save").live("click", function(){ var photo = document.getElementById("imf"); var file = photo.files[0]; $.post('/user/saveNewPhoto', {'imf':file.getAsDataURL(), fname:file.fileName }, function( data ){ alert ( data ); }); }); 

загрузить скрипт нужно декодировать base64), и это все, но я не тестирую этот скрипт в файле большого размера