2014-10-20 4 views
0

Мне было интересно, могу ли я получить немного совета.jQuery загрузка работает, но не загружается файл

Im пытается загрузить файл с помощью jquery, сохраняя при этом пользователя на той же странице.

Что бы я ни пытался, не работает. Мне было интересно, может ли кто-нибудь взглянуть и сказать, где я ошибаюсь.

Мой HTML является

<form id="import" enctype="multipart/form-data" action="/ajax/postimport" method="POST"> 
    <div class="form-group"> 
     <input type="file" name="filename" id="filename" /> 
    </div> 
    <button type="button" id="importSave">Import</button> 
</form> 

Это мой JQuery

$("#importSave").click(function() 
{ 
    $.ajax({ 
     url: '/ajax/postimport', 
     type: 'POST', 
     dataType: 'json', 
     contentType: false, 
     processData: false, 
     data: {file: $(#filename).val()}, 
     success: function(data) 
     { 
      alert(data.result) 
     }, 
     error: function(textStatus, errorThrown) 
     { 

     } 
    }); 
}); 

, а затем мой PHP, который Laravel 4

 if (Input::hasFile('filename')) { 
      $file = Input::file('filename'); 
      $destPath = public_path() . '/uploads/'; 
      $filename = str_random(10) . '_' . $file->getClientOriginalName(); 
      $uploadSuccess = $file->move($destPath, $filename); 
     } 

ответ

0

Это не возможно загрузить файлы просто используя функцию jQuery ajax. Для этого вам понадобится объект FormData. Проблема с Formdata заключается в том, что она равна not supported in all browsers. Если вы хотите его использовать, вы всегда можете найти много учебников, например this one.

Вы также можете использовать a jQuery plugin that does the work for you. :)

0

Невозможно это сделать. вы просто делаете post ajax-запрос только с одним файлом поля: $ (# filename) .val().

Так что вам нужно использовать библиотеку загрузки ajax. Существует несколько альтернатив. Но мне больше всего нравится в

http://www.plupload.com/

http://www.uploadify.com/

Смежные вопросы