2015-12-06 2 views
1

Я пытаюсь выполнить this answer, чтобы загрузить файл через Ajax и PHP с помощью Jquery, но он не работает.Проблема с загрузкой файла через PHP и JQuery

Это (часть) мой HTML форма (я использую самозагрузку):

<form role="form" enctype="multipart/form-data" id="edit-company" method="POST"> 
<div class="form-group"> 
    <div class="row"> 
     <div class="col-md-6"> 
      <div class="row"> 
       <div class="col-md-12 form-group"> 
        <label for="field-name-company">Name:</label>     <input id="field-name-company" name="nameCompany" class="form-control" type="text"/> 
       </div> 
       </div> 
        <div class="row"> 
         <div class="col-md-12 form-group"> 
          <label for="field-street-social-emp">Street</label>     <input id="field-street-social-emp" name="streetCompany" class="form-control" type="text"/> 
          </div> 
        </div> 
       <div class="col-md-12 form-group"> 
        <div class="row"> 
         <label for="foto-empresa">Foto/Logo:</label> 
         <div class="form-group"> 
          <input type="file" name="fotoEmpresa"/> 
         </div> 
         <button class="btn btn-success pull-right" type="submit" value="Confirm" id="submit-edit-company"><span class="glyphicon glyphicon-ok"></span> Update</button> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</form> 

Это мой JQuery фрагмент:

$('#submit-edit-company').click(function(e) { 
     e.preventDefault(); 

     var formToSubmit = $(this).parents('form#edit-company'); 
     var dataToSend = formToSubmit.serialize(); 
     var fileInput = formToSubmit.find('input[type="file"]')[0]; 
     var fileData = fileInput.attr('files')[0]; 
     console.log(fileData); 

     $.ajax({ 
      url: 'app/editCompanyService', 
      data: dataToSend, 
      type: 'POST', 
      dataType: 'JSON', 
      contentType: false, 
      cache: false, 
      processData:false, 
      beforeSend: function() {}, 
      success: function (return) {}, 
      error: function(jqXHR, textStatus, errorThrown) { 
       console.log("Error... " + textStatus + "  " + errorThrown); 
      } 

Когда я отладка яваскрипта и мониторинг fileInput, я вижу файл как Files: FilesList[1] 0: File..., но скрипт просто останавливается и ничего не показывает в консоли, даже ошибки.

$_FILES var на PHP просто пуст. (Все конфигурации, указанные в this post, уже проверены).

Также попробовал fileInput.prop('files')[0]; и new FormData(formToSubmit), но у меня такая же проблема.

Что я делаю неправильно?

+1

Возможный дубликат (http://stackoverflow.com/questions/166221/how-can-i-upload-files -асинхронно) –

+0

Вы уверены, что браузер, который вы используете, поддерживает то, что вы пытаетесь сделать? – Terminus

+0

@u_mulder. Я не видел этого вопроса. Я попробую предлагаемое решение, чтобы убедиться, что проблема такая же. – James

ответ

0

Хотя это не проблема, ответ на вопрос this SO POST (связанный в комментариях к вопросу от @u_mulder) решает мою проблему.

Вот функциональный код: [? Как я могу загрузить файлы асинхронно]

$('#submit-edit-company').click(function(e) { 
     e.preventDefault(); 

     var formToSubmit = $(this).parents('form#edit-company'); 
     var dataToSend = new FormData(formToSubmit[0]); 
     var fileInput = formToSubmit.find('input[type="file"]')[0]; 
     var fileData = fileInput.attr('files')[0]; 
     console.log(fileData); 

     $.ajax({ 
      url: 'app/editCompanyService', 
      data: dataToSend, 
      type: 'POST', 
      dataType: 'JSON', 
      contentType: false, 
      cache: false, 
      processData:false, 
      beforeSend: function() {}, 
      success: function (return) {}, 
      error: function(jqXHR, textStatus, errorThrown) { 
       console.log("Error... " + textStatus + "  " + errorThrown); 
      } 

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

  • Нет связанных вопросов^_^