2015-02-09 40 views
0

所以,我使用的是我在WWW上下載的jQuery上傳腳本。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返回什麼? – 2015-02-09 13:53:04

+0

沒有JS錯誤,「網絡」告訴我,我的upload.php有一個很好的(代碼:200)連接。文件現在正在上傳smh,但沒有任何內容存儲在我的數據庫中... – PoTTii 2015-02-09 13:57:25

+0

Yep代碼是200,但PHP的實際響應是什麼?意思是,數據返回? PHP正在尋找'isset($ _ FILES [「myfile」])',但是,您從不在JS中定義任何名爲'myfile'的東西。我的猜測是你的'if(isset())'被純粹跳過,沒有錯誤,狀態200 OK。 – 2015-02-09 14:26:05

回答

1

我猜,如果沒有文件顯示......你可能會在你的表格中缺少enctype="multipart/form-data"

+0

該文件正在顯示。只有「插入」現在不起作用。 – PoTTii 2015-02-09 14:05:09

+0

試試這個,有錯字錯誤...'INSERT INTO Files(FileName,UploadDate,DownloadCount)VALUES('$ fileName',CURRENT_TIMESTAMP,0)';' – 2015-02-09 14:10:16

+0

只是好奇......做'CURRENT_TIMESTAMP'工程..? – 2015-02-09 14:11:44

1

PHP正在尋找isset($ _ FILES [「myfile」]),但是,您從不在JS中定義任何名爲'myfile'的東西。我的猜測是你的if(isset())是純粹跳過的,沒有錯誤,狀態200 OK。