Php 多次上载,仅上载最后一个文件

Php 多次上载,仅上载最后一个文件,php,upload,Php,Upload,我目前在一个网站项目的工作,需要有一个以上的图像上传在相同的形式 提交表单时,只上传最后一张图片,我不知道为什么。我一直在谷歌、这个网站和其他很多网站上寻找答案,但我找不到任何人有完全相同的问题来找到解决方案 我已经用WAMP和在线测试了这个基本代码,问题仍然是一样的 以下是表格: <form action="index.php?action=add" method="post" enctype="multipart/form-data"> <input type="file"

我目前在一个网站项目的工作,需要有一个以上的图像上传在相同的形式

提交表单时,只上传最后一张图片,我不知道为什么。我一直在谷歌、这个网站和其他很多网站上寻找答案,但我找不到任何人有完全相同的问题来找到解决方案

我已经用WAMP和在线测试了这个基本代码,问题仍然是一样的

以下是表格:

<form action="index.php?action=add" method="post" enctype="multipart/form-data">
<input type="file" name="file1"/><br/>
<input type="file" name="file2"/><br/>
<input type="file" name="file3"/><br/>
<input type="hidden" name="add" value="1"/>
<input type="submit" value="ok"/>




下面是我上传时使用的代码:

function move_avatar($avatar)
{
    $extension_upload = strtolower(substr(  strrchr($avatar['name'], '.')  ,1));
    $name = time();
    $nomavatar = str_replace(' ','',$name).".".$extension_upload;
    $name = "images/".str_replace(' ','',$name).".".$extension_upload;
    move_uploaded_file($avatar['tmp_name'],$name);
    return $nomavatar;
}
if(!empty($_POST['add'])){
    for($i=1;$i<=3;$i++){
        if(!empty($_FILES['file'.$i]['size'])){
            $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );           
            $extension_upload = strtolower(substr(strrchr($_FILES['file'.$i]['name'], '.')  ,1));
            if(in_array($extension_upload,$extensions_valides))     
            $img =(!empty($_FILES['file'.$i]['size']))?move_avatar($_FILES['file'.$i]):'';
            else $img = 'defaultImg.png';
        }else $img = 'defaultImg.png';
    }
    print_r($_POST);
}else include('test.php');
功能移动\u化身($avatar)
{
$extension_upload=strtolower(substr(strrchr($avatar['name'],'.')),1));
$name=time();
$nomavatar=str_replace(“”,,$name)。“..$extension_upload;
$name=“images/”.str_replace(“”,$name)。“$extension_upload;
移动上传的文件($avatar['tmp\u name',$name);
返回$nomavatar;
}
如果(!空($_POST['add'])){

对于($i=1;$i这是来自Facebook的Caroline

即使你在Facebook上读到了我的答案,我也会发布这个答案来表示这个问题已经解决了

在测试了你的脚本之后,我发现了问题所在。 问题出在函数中,在函数中声明$name变量:

$name = time();
    $name = time().$number;
当你同时上传多张图片时,它们都有相同的时间戳,因此,名称相同!这就是为什么只发送最后一张图片的原因

为了解决这个问题,我在函数中添加了一个参数,以便添加一个数字,使文件名彼此不同:

function move_avatar($avatar,$number)
然后我将这个新变量添加到第一个$name变量中:

$name = time();
    $name = time().$number;
最后,在使用函数时使用$I变量:

                $img =(!empty($_FILES['file'.$i]['size']))?move_avatar($_FILES['file'.$i],$i):'';
经过这些修改,所有上传的图像现在都有了一个不同的名称,最后一位数字是不同的