求够一个PHP实现多文件上传的例子,直接贴代码,谢谢。
回复讨论(解决方案)
怎么没有人。。。。
百度swfupload,下载个实例研究下吧
多文件上传不是几句代码就说清楚的。
会单文件上传不?会的话多文件是一样的道理。只不过表单控件命名为数组,php处理数组而已。
$_FILES[“file”] 怎么接收数组的文件,我用
foreach ($_FILES[“file”] as $item)
{
$s=$s.”,”.$item;
}
只能接收一个文件
你的html代码是什么?
if($_FILES[‘file’][‘size’] >0){
if ( $_FILES[“file”][“error”] > 0){
$msg= “附件上传错误: ” . $_FILES[“file”][“error”];
}else{
//if (file_exists(“upload/”.$_FILES[“file”][“name”])){
// echo $msg =$_FILES[“file”][“name”].” 附件已经存在! “;
//}else{
$yc = $_POST[‘yc’];
$yt = $_POST[‘yt’];
$type = $_POST[‘type’];
$newFileName=str_replace(“.”,”_”.time().”.”,$_FILES[“file”][“name”]);
$path=”upload/” . $newFileName;
move_uploaded_file($_FILES[“file”][“tmp_name”],$path);
$sql=”insert into A004(c02,c03,c04,c05,c06,c07,c08,c09,c10) values (‘”.$id.”‘,'”.$newFileName.”‘,'”.$path.”‘,'”.$yc[0].”‘,'”. $yt[0].”‘,'”.$type[0].”‘,’0’,'”.$_SESSION[‘LOGIN_ID’].”‘,'”.get_time().”‘) “;
$msg=$DB->Update($sql,”[10016]提交数据时失败,请稍后再试,或与技术员联系!”);
//}
}
}
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js”></script>
<body>
增加图片
<script type=”text/javascript” >
$(document).ready(function(){
bindListener();
});
// 用来绑定事件(使用unbind避免重复绑定)
function bindListener(){
$(“a[name=rmlink]”).unbind().click(function(){
$(this).parent().remove();
})
}
function addimg(){
$(“#mdiv”).append(‘
‘);
// 为新元素节点添加事件侦听器
bindListener();
}
</script>
for($i=0; $i<count($_FILES["file"]['error']); $i++) {
*本文来源gaodai#ma#com搞@代~码^网+搞代gaodaima码 //这部分是你的恕我不一一抄录,不过加了点东西
$newFileName=str_replace(“.”,”_”.time().”.”,$_FILES[“file”][“name”] [$i]);
$path=”upload/” . $newFileName;
move_uploaded_file($_FILES[“file”][“tmp_name”] [$i],$path);
}
不过 time() 似乎不够了,要 microtime(1) 才基本够
试试uploadify
稍作修改就ok了。
https://github.com/valums/file-uploader
推荐
for($i=0; $i<count($_FILES["file"]['error']); $i++) {
//这部分是你的恕我不一一抄录,不过加了点东西
$newFileName=str_replace(“.”,”_”.time().”.”,$_FILES[“file”][“name”] [$i]);
$path=”upload/” . $newFileName;
move_uploaded_file($_FILES[“file”][“tmp_name”] [$i],$path);
}
不过 time() 似乎不够了,要 microtime(1) 才基本够
我就想知道后台怎么接收多文件
示例的代码就是
你的上传控件是
所以 $_FILES[“file”][xxx] 都是数组 (xxx = tmp_name,name,error,type,size)
逐个处理就是了,当然只有 error 等于 0 的才是被成功上传的
示例的代码就是
你的上传控件是
所以 $_FILES[“file”][xxx] 都是数组 (xxx = tmp_name,name,error,type,size)
逐个处理就是了,当然只有 error 等于 0 的才是被成功上传的
foreach ($_FILES[‘file’] as $item)
{
//echo print_r($item);
}
怎么这样只得到第一个文件啊
测试代码
<?phpprint_r($_FILES);?> <br> <br> <br>
选择两个文件后截图
提交后 $_FILES 数组
Array
(
[file] => Array
(
[name] => Array
(
[0] => i.jpg
[1] => Ico.zip
[2] =>
)
[type] => Array
(
[0] => image/pjpeg
[1] => application/x-zip-compressed
[2] =>
)
[tmp_name] => Array
(
[0] => C:\Documents and Settings\Administrator\Local Settings\Temp\php188.tmp
[1] => C:\Documents and Settings\Administrator\Local Settings\Temp\php189.tmp
[2] =>
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 4
)
[size] => Array
(
[0] => 7198
[1] => 121062
[2] => 0
)
)
)
自己去看吧