我尝试使用以下代码上传多个文件时遇到问题.当我尝试选择多个文件时,我只显示多个文件中的第一个文件.如何获取所有这些文件名以及临时名称和类型等所有信息?
<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);