2015-02-09 6 views
0

Итак, я использую jQuery Upload-Script, который я загрузил на WWW.Запрос xmlhttprequest отправлен, но код не выполнен?

Это мой код JavaScript:

$(document).ready(function() 
       { 
        var settings = { 
         url: "upload.php", 
         method: "POST", 
         allowedTypes:"pdf,xls,doc,docx,xlsx", 
         fileName: "name", 
         multiple: true, 
         onSuccess:function(files,data,xhr) 
         { 
          $("#status").html("<font color='green'>Upload is successed</font>"); 

         }, 
         onError: function(files,status,errMsg) 
         { 
          $("#status").html("<font color='red'>Upload is failed: " + errMsg + "</font>"); 
         }, 
         showDelete:true, 
         deleteCallback: function(data,pd) 
         { 
          for(var i=0;i<data.length;i++) 
          { 
           $.post("delete.php",{op:"delete",name:data[i]}, 
            function(resp, textStatus, jqXHR) 
            { 
             //Show Message 
             $("#status").html("<font color='red'>File deleted.</font>"); 
            }); 
          } 
          pd.statusbar.hide(); //You choice to hide/not. 

         } 
        }; 
        $("#mulitplefileuploader").uploadFile(settings); 

       }); 

А это мой "upload.php":

<?php 
include_once("_assets/_pages/db.php"); 

$output_dir = "_files/"; 
if(isset($_FILES["myfile"])) 
{ 
    $ret = array(); 

    $error = $_FILES["myfile"]["error"]; 
    //You need to handle both cases 
    //If Any browser does not support serializing of multiple files using FormData() 
    if(!is_array($_FILES["myfile"]["name"])) //single file 
    { 
     $fileName = $_FILES["myfile"]["name"]; 
     move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName); 
     $ret[]= $fileName; 
     $sql = 'INSERT INTO `Files` (FileName, UploadDate, DownloadCount) VALUES ($filename, CURRENT_TIMESTAMP, 0)'; 
     $db->query($sql); 
    } 
    else //Multiple files, file[] 
    { 
     $fileCount = count($_FILES["myfile"]["name"]); 
     for($i=0; $i < $fileCount; $i++) 
     { 
      $fileName = $_FILES["myfile"]["name"][$i]; 
      move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName); 
      $ret[]= $fileName; 
      $sql = 'INSERT INTO `Files` (FileName, UploadDate, DownloadCount) VALUES ($filename, CURRENT_TIMESTAMP, 0)'; 
      $db->query($sql); 
     } 

    } 
    echo json_encode($ret); 
} 
?> 

Мой upload.php не помещает файл в "_FILES /", ни вставляя что-нибудь в свою базу данных? Что я делаю неправильно?

Другой вопрос: рекомендуете ли вы какие-либо другие хорошо разработанные (загрузочные) jQuery обработчики загрузки файлов?

+0

Любые ошибки JS в консоли браузера? Что возвращает PHP? –

+0

Нет ошибок JS, «Network» сообщает мне, что был хороший (код: 200) conendction для моего upload.php. Файлы теперь загружаются smh, но ничего не хранится в моем db ... – PoTTii

+0

Да, код - 200, но каков фактический отклик PHP? Смысл, данные вернулись? PHP ищет 'isset ($ _ FILES [" myfile "])', однако вы никогда не определяете что-либо с именем 'myfile' в вашей JS. Я предполагаю, что ваш 'if (isset())' просто пропущен, никаких ошибок, статус 200 OK. –

ответ

1

Я думаю, если файл не отображается ... возможно, вам не хватает enctype="multipart/form-data" в вашей форме.

+0

Файл отображается сейчас. Только «INSERT» сейчас не работает. – PoTTii

+0

Попробуйте это, была ошибка опечатки ... 'INSERT INTO Files (FileName, UploadDate, DownloadCount) VALUES ('$ fileName', CURRENT_TIMESTAMP, 0) ';' –

+0

Просто любопытно ... работает 'CURRENT_TIMESTAMP'?? –

1

PHP ищет isset ($ _ FILES ["myfile"]), однако вы никогда не определяете что-либо под названием 'myfile' в вашей JS. Я предполагаю, что ваш if (isset()) просто пропущен, никаких ошибок, статус 200 OK.