JQuery 多文件上传

JQuery multiple file upload

我在尝试使用以下代码上传多个文件时遇到问题。当我尝试 select 多个文件时,我只显示多个文件中的第一个文件。我怎样才能获得所有这些文件名以及所有信息,例如临时名称和类型?

这里是 HTML 多次上传的代码:

<form id="imageform" method="post" enctype="multipart/form-data" action='ajaxImageUpload.php' style="clear:both">
<h3>Upload your Documents Here</h3> 
<div id='imageloadstatus' style='display:none'><img src="loader.gif" alt="Uploading...."/></div>
<div id='imageloadbutton'>
<style>
.col-md-4 {
    float: none;
}
</style>

<div class="col-md-4">


 <div class="input-group">
                     <label for="startDate">Select Month-Year :</label><br />
                     <input name="startDate" id="startDate" class="date-picker form-control" placeholder="Select Month-Year" />

                    </div>
                    <br />
                    <br />
                      <script src="js/jquery.monthpicker.min.js"></script> 

<script>
$(document).ready(function() {

    $('#startDate').monthpicker();

    });
    </script>


<input type="file" name="photos[]" id="photoimg" multiple="true" class="form-control" />
</div>
<br />
<br />
</div>
</form>

这是 JQuery ajax 调用:

 $('#photoimg').die('click').live('change', function(){ 
                   //$("#preview").html('');

         if($('#startDate').val()=='' ||  $('#startDate').val()==null )
         {
            alert("Select Month/year");
            return false;
         }
         else
         {
            var d=$('#startDate').val();
           $.ajax({
        type: "POST",
        url: "mdoc_upld.php",
        data: {'startDate':d,'files': $('#photoimg').val()}
    }).done(function(data){
        $("#preview").html(data);
         });
         }
        });

最后,上传的文件是这样处理的:

require_once "connection.php";
define ("MAX_SIZE","9000"); 
function getExtension($str)
{
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
}


$valid_formats = array("pdf", "xls","xlsx","doc","docx");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{
    print_r($_POST);exit;
    if(isset($_POST['startDate']) && $_POST['startDate'] !='')
    {
        $d=$_POST['startDate'];
       // $unixtime = 602294400;
        $time = date("Y-m",$d);
        //echo $time ;

    }

调用print_r只显示一个文件名,但它应该是所有文件名的数组吧?

我怎样才能访问所有已上传的文件?

我找到了这个多图上传教程。 here is link to tutorial

如果您想上传 pdf 文件或任何其他文件,您只需要替换 ajaxImageupload.php

中的以下行
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");

用这条线

$valid_formats = array("pdf", "doc", "docx");

在此处添加更多文件扩展名。

还有一件事,如果您正在按照本教程为任何文件类型上传多个文件,则只需替换以下代码 jquery.wallform.js

        var exp = /<img[^>]+>/i;

        expResult = data.match(exp);
       if(expResult == null)
       {
        alert("Something went wrong.");
       }
       else{
        $(options.target).prepend(data);
        }

使用此代码:

$(options.target).prepend(data);

到此大功告成。享受并归功于 9lessons