首頁 >後端開發 >php教程 >PHP实现多文件上传

PHP实现多文件上传

WBOY
WBOY原創
2016-06-23 14:07:54959瀏覽

求够一个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]提交数据时失败,请稍后再试,或与技术员联系!");

//}
}
}




nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



jQuery动态添加input type=file文件上传域
<script></script> 

 
 
 
增加图片 
 
 
删除 
 
 
 
 
<script> <br /> $(document).ready(function(){ <br /> bindListener(); <br /> }); <br /> // 用来绑定事件(使用unbind避免重复绑定) <br /> function bindListener(){ <br /> $("a[name=rmlink]").unbind().click(function(){ <br /> $(this).parent().remove(); <br /> }) <br /> } <br /> function addimg(){ <br /> $("#mdiv").append('<div class="iptdiv"><input type="file" name="img[]" class="ipt" /><a href="#" name="rmlink"> X '); <br /> <br /> // 为新元素节点添加事件侦听器 <br /> <br /> bindListener(); <br /> } <br /> </script>


for($i=0; $i   //这部分是你的恕我不一一抄录,不过加了点东西
  $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   //这部分是你的恕我不一一抄录,不过加了点东西
  $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);?><form method="POST" enctype="multipart/form-data"> <input type=file name=file[] /><br> <input type=file name=file[] /><br> <input type=file name=file[] /><br> <input type=submit></form>
选择两个文件后截图
提交后 $_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
                )

        )

)

自己去看吧

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn