2012-10-25 238 views
0

我正在使用php mysql.Here的一個web應用程序,需求說,用戶應該能夠一次上傳多個文件,將它們存儲在服務器上。目前我可以上傳使用此單個文件,使用jquery文件上傳器和PHP上傳多個文件

$(function(){ 
var btnUpload=$("#uploadPdf"); 
new AjaxUpload(btnUpload, { 
    action:"uploadPdf.php", 
    name: "uploadCertPdf", 
    onSubmit: function(file, ext){ 
     if (!(ext && /^(pdf)$/.test(ext))){ 
      alert("Upload File (Supports PDF formats only)"); 
      return false; 
     }   
     var stats = $("#resultsOuter"); 
     stats.html('<img src="images/layout/preloader-2.png" />'); 
    }, 
    onComplete: function(file, response){ 
      alert(response); 
      alert("File uploaded successfully"); 
      window.location="somePage.php"; 

    } 
    }) 
    });   

/**somePage.php file**/ 

    if (isset($_FILES["uploadCertPdf"])) 
    { 
    if ($_FILES["uploadCertPdf"]["error"] > 0) 
    { 
     echo "Error: " . $_FILES["uploadCertPdf"]["error"] . "<br />"; 
    } 
else 
    { 
     if(!is_dir($_SERVER['DOCUMENT_ROOT']."admin/pdf/")) 
    { echo "not found"; 
     mkdir($_SERVER['DOCUMENT_ROOT']."admin/pdf/", 0777,true); 
    } 
     if(file_exists($file)) 
     { echo "duplicate"; 
      $flag = TRUE; 
     } 
     else 
     { 
      $uploaddir = '/admin/pdf/'; 
      $uploadfile = $uploaddir . basename($_FILES['uploadCertPdf']['name']); 
      $path_info = pathinfo($_FILES['uploadCertPdf']['name']); 
      $type= $path_info['extension']; 
      if($type == 'pdf') 
      { 

       $flag = move_uploaded_file($_FILES['uploadCertPdf']['tmp_name'],$uploadfile); 

      }else{ 
       echo "You can upload only PDF files"; 
       } 
     } 

     } 
    } 

如何自定義它一次上傳多個文件?我試圖尋找,但所有的插件自定義爲使用某些用戶界面,即它們他們自己的獨立模塊和功能。
因此,任何幫助,將不勝感激。謝謝您的時間。 編輯:我添加了動態創建文件輸入的ajax上傳功能。

/** 
* Creates invisible file input above the button 
**/ 
_createInput : function(){ 
    var self = this; 
    var input = d.createElement("input"); 
    input.setAttribute('type', 'file'); 
    input.setAttribute('name', this._settings.name); 
    input.setAttribute('id', 'file'+this._settings.name); 
    var styles = { 
     'position' : 'absolute' 
     ,'margin': '-5px 0 0 -175px' 
     ,'padding': 0 
     ,'width': '220px' 
     ,'height': '30px' 
     ,'fontSize': '14px'        
     ,'opacity': 0 
     ,'cursor': 'pointer' 
     ,'display' : 'none' 
     ,'zIndex' : 2147483583 //Max zIndex supported by Opera 9.0-9.2x 2147483583 
     // Strange, I expected 2147483647 
    }; 

我試着向name屬性添加一個數組,但沒有奏效。

+2

檢查此鏈接http://fineuploader.com/它可以幫助你 – nu6A

+1

使用plupload。它有很多可用的選項。 http://www.plupload.com/ –

+0

感謝您的迴應,但我不是在尋找一個插件bcoz我已經使用一個,沒有足夠的時間切換到另一個,因爲我已經有它在不同的地方工作。因此,我希望有人確定將我的插件修改爲多個上傳場景所需的更改。 – KillABug

回答

1

我剛剛在Grails項目上完成了多文件上傳功能,使用本文作爲指導(基於PHP)。如果你想推出自己的產品 - 這是一個很好的參考。

http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/

+0

是的,我已經嘗試過類似的東西,但問題是我沒有使用傳統的上傳按鈕。我使用jquery ajax上傳文件,並使用** iframe **進行上傳處理。現在,當上傳對話框打開時,它不允許我選擇多個文件。儘管我已經將name屬性添加爲數組(類似於您建議的鏈接中所做的)。謝謝 – KillABug

+0

本文中的示例實際上使用純ajax(jQuery)進行多個文件上傳 - 它只在IE9及更低版本的情況下默認爲傳統的單一上傳。否則,示例中的代碼允許用戶選擇多個文件,並在「更改」事件上,它會上傳所有選定的文件。 – user553180

+0

會經過並試一試!謝謝! – KillABug