我使用for循环验证PHP中的页面,然后使用move_uploaded_file
移动上传的文件+还将图像路径添加到数据库。以下是我的代码。
if(empty($_FILES) === false) {
for($i=1; $i<=$items; $i++) {
$allowed = array('jpg', 'jpeg', 'gif', 'png');
if (empty($_FILES['photo{$i}']['name']) === true) {
echo '<div class="alert alert-danger">Please choose a file.</div>';
} else {
if (in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name']))), $allowed) === false) {
echo '<div class="alert alert-danger">[Photo '.$i.'] Format <strong>NOT</strong> acceptable. ';
echo 'Accepted formats: '. implode(', ', $allowed).'</div>';
} elseif($_FILES["photo{$i}"]['size'] > 1048576) {
echo '<div class="alert-danger">[Photo '.$i.'] Image is too big. Maximium file size is 1MB.</div>';
} else {
mysqli_query($con, "UPDATE temp SET photo{$i} = '".rand(0,999).".".in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name']))))."' WHERE session = $session");
move_uploaded_file($_FILES["photo{$i}"]['tmp_name'], 'img/temp/'.rand(0,999) . '.' . in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name'])))));
}
}
}
}
图像不会移动到所需的上载位置,也不会更新数据库中的文件路径。请有人帮忙吗?
答案 0 :(得分:1)
您'photo{$i}'
的任何地方都不正确。正如elitechief21在上面的评论中解释的那样,PHP不会用单引号解析变量。所以它实际上在photo{$i}
中寻找关键$_FILES
,将{$i}
视为文字文本。当然,这不存在,因此脚本无法按预期工作。
当photo{$i}
当前位于单引号内时,您需要使用双引号。