2015-12-06 57 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); 
      } 

當我調試JavaScript和監控fileInput,我可以看到像Files: FilesList[1] 0: File...這樣的文件,但腳本剛停止,不會在控制檯中顯示任何內容,甚至是錯誤。

PHP中的$_FILES var只是空的。 (所有配置都指向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); 
      }