我目前正在进行一个网站项目,需要以相同的形式上传多个图像。
提交表格时,只上传了最后一张照片,我不知道为什么。我一直在谷歌、这个网站和其他许多网站上寻找答案,但我找不到有完全相同问题的人来找到解决方案。
我已经用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');
有什么想法吗?:/
我是来自Facebook的Caroline!
即使你在脸书上读到我的答案,我也会发布这个答案,以表明这个问题已经解决。
在测试了你的脚本后,我发现了问题所在。问题出现在您的函数中,您在函数中声明$name变量:
$name = time();
当你同时上传几张照片时,它们都有相同的时间戳,因此,同名!这就是为什么只发送最后一张照片的原因!
为了解决这个问题,我在函数中添加了一个参数,以便添加一个数字,使文件名彼此不同:
function move_avatar($avatar,$number)
然后我将这个新变量添加到第一个$name变量中:
$name = time().$number;
最后,当使用函数时,我使用$I变量:
$img =(!empty($_FILES['file'.$i]['size']))?move_avatar($_FILES['file'.$i],$i):'';
经过这些修改,上传的所有图像现在都有了一个不同的名称,最后一个数字不同。