2009-02-15 3 views
6

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

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

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

ответ

11

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

Заканчивать этот родственный вопрос:
Is it possible to use Ajax to do file upload?

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

12

форма 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

0

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

0

Возможно, но не работает в 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), и это все , но я не проверить этот скрипт на файл большого размера

1

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

1

Используйте 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> 
Смежные вопросы