【问题标题】:Uploading multiple files using jquery file uploader and PHP使用 jquery 文件上传器和 PHP 上传多个文件
【发布时间】:2012-10-25 05:58:36
【问题描述】:

我正在使用 php mysql 开发一个 web 应用程序。这里,要求说,用户应该能够一次上传多个文件,将它们存储在服务器上。目前我可以使用上传单个文件这个,

 $(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 属性中添加一个数组,但没有成功。

【问题讨论】:

  • 检查这个链接fineuploader.com它可能对你有帮助
  • 使用插件。它有很多可用的选项。 plupload.com
  • 感谢您的回复,但我不是在寻找插件,因为我已经在使用一个插件并且没有足够的时间切换到另一个插件,因为我已经在不同的地方工作了。因此我想要有人确定将我的插件修改为多上传场景所需的更改。

标签: php jquery ajax file-upload


【解决方案1】:

您可以使用http://blueimp.github.com/jQuery-File-Upload/ 提供的 Jquery 插件一次上传多个文件。

【讨论】:

    【解决方案2】:

    我刚刚完成了一个 Grails 项目的多文件上传功能,使用本文作为指南(基于 PHP)。如果您想自己动手 - 这是一个很好的参考。

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

    【讨论】:

    • 是的,我尝试过类似的方法,但问题是我没有使用传统的上传按钮。我使用 jquery ajax 上传文件,它使用 iframe。现在,当上传对话框打开时,它不允许我选择多个文件。即使我已将名称属性添加为数组(类似于您建议的链接中所做的)。谢谢
    • 文中的例子实际上是使用纯ajax(jQuery)进行多文件上传——仅在IE9及以下的情况下默认为传统的单文件上传。否则,示例中的代码允许用户选择多个文件,并且在“更改”事件中,它会上传所有选定的文件。
    • 将通过并试一试!谢谢!
    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2021-09-09
    相关资源
    最近更新 更多