2012-10-25 193 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