我试图通过$ _FILES使用一个输入将多个文件从我的计算机传输到我的项目中的文件夹,文件移动成功,但每次与最后一个文件的标题{{3}相关时,标题都会重复,任何解决方案???也许我应该使用foreach代替for循环???
我的代码:
<body>
<!--images adding-->
<form action=" " method="post" enctype="multipart/form-data" style="margin-left:100px;margin-top:100px">
<div class="display-4">Ajouter images</div>
<p>
<input type="file" name="file[]" size="50" class="btn" style='background-color:#374180;color:yellow;' multiple>
</p>
<p>
<input class="btn cursor" type="submit" value="Upload" name='but' style='background-color:#314796;color:yellow;' />
</p>
</form>
<?php
if(isset($_POST['but'])) {
$chemin = 'uploads/';
$fileCount = count($_FILES['file']['name']);
echo $fileCount;
for($i=1;$i<=$fileCount;$i++) {
$chemin = $chemin.basename($_FILES['file']['name'][$i]);
if(move_uploaded_file($_FILES['file']['tmp_name'][$i],$chemin)) {
var_dump($_FILES);
} else {
echo 'Error uploading ';
}
}
}
?>
</body>
答案 0 :(得分:3)
每次循环播放时,您都会将另一个名称附加到$chemin
,从而使名称越来越长。对目录使用不同的变量,而不是您要复制到的全名。
<?php
if(isset($_POST['but']))
{
$dir = 'uploads/';
$fileCount = count($_FILES['file']['name']);
echo $fileCount;
for($i=1;$i<=$fileCount;$i++)
{
$chemin = $dir.basename($_FILES['file']['name'][$i]);
if(move_uploaded_file($_FILES['file']['tmp_name'][$i],$chemin))
{
var_dump($_FILES);
}
else
{
echo 'Error uploading ';
}
}
}
?>