2014-01-05 3 views
1

Я пытаюсь загрузить файл .doc, .docx через ajax, но он продолжает отправлять мне ошибку в моей консоли. Вот мой сценарий.Загрузить (.doc, .docx) файл в php с помощью ajax

 var file = $('#file').val(); 
     $(document).on('change','#file',function(){ 
      var data = new FormData($("#fileinfo")); 
      $.each($('#file')[0].files, function(i, file) { 
       data.append('file-'+i, file); 
      }); 
      console.log(FormData); 
      $.ajax({ 
       url: "main-function.php?call=upload", 
       data: data, 
       cache: false, 
       contentType: false, 
       processData: false, 
       type: 'POST', 
       success: function(data){ 
        console.log(data) 
       } 
      }); 
      return false; 

     }); 

А вот main-function.php:

if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error " . $_FILES['file']['error']); 
    } 
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $_FILES['file']['tmp_name']); 
    $ok = false; 
    $userid = $_SESSION['username']; 
    switch ($mime) {  
     case 'application/pdf': 
     case 'application/msword': 
      $ok = true; 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
       "pds/" . $userid . '-' . time().'-' . $_FILES["file"]["name"]); 
      break; 
     default: 
      echo 'Type not supported'; 
    } 

Edit: Вот ошибка

<b>Notice</b>: Undefined index: file in <b>C:\xampp\htdocs\hrms\main\main-function.php</b> on line <b>9</b><br /> 

    <b>Warning</b>: finfo_file() [<a href='function.finfo-file'>function.finfo-file</a>]: Empty filename or path in <b>C:\xampp\htdocs\hrms\main\main-function.php</b> on line <b>9</b><br /> 
+0

Какую ошибку вы получаете? ok с другими типами файлов? – chanchal118

+0

Что такое 'attr (« enctype »,« multipart/form-data »),'? И какая ошибка - это «отправка» на консоль? – meagar

+0

См. Обновленный вопрос – leonardeveloper

ответ

0

Вы отправляете файлы как file-0, file-1 ... но вы ищете file ,
Если вы только отправка один файл просто отправить файл как file

data.append('file', $('#file')[0].files[0]); 

также если #fileinfo форму, вы хотите, чтобы передать его в конструктор FormData не объект JQuery

var data = new FormData($("#fileinfo")[0]); 

также если #file находится в этой форме, вы будете отправлять файл дважды.

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