我有一个脚本,用户可以上传多个文件(最多8个)。 HTML由一段PHP生成:
$max_no_img=8;
for($i=1; $i<=$max_no_img; $i++){
<div class='photo photo$i'>
<div class='new_label'>
Foto $i:
</div>
<div class='new_input'>
<input type='file' name='images[]' />
</div>
</div>";
}
所以数组images[]
由8个值组成。但是,每次用户提交表单时,表单都会生成一个包含8个项目的数组,然后在数据库中插入8个值(无论它们是否为空)。
所以我想取消设置空值,将文件复制到我的文件夹并将链接插入我的数据库。但这里是错误发生的部分。
$_FILES
数组包含4件事。 name
,tmp_name
,error
和size
。我如何得到它所以一个完整的项目(假设images[0]
)将从数组中取消设置,以便我可以继续实际携带值的项目。
我试过了,但没有结果......
unset($_FILES['images'][0])
和
unset($_FILES['images']['name'][0])
unset($_FILES['images']['tmp_name'][0])
unset($_FILES['images']['error'][0])
unset($_FILES['images']['size'][0])
有关如何取消$ _FILES-arry值的任何建议吗?
答案 0 :(得分:2)
您实际上不需要unset
任何项目。只需跳过与上传文件不对应的项目:
for($i=1; $i <= $max_no_img; $i++) {
if(empty($_FILES['images']['name'][$i])) {
continue; // that's all it takes
}
}
答案 1 :(得分:2)
您可以忽略它们,而不是处理或取消设置任何项目:
if (!empty($_FILES['images'])) {
for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
if (empty($_FILES['images']['name'][$i])) {
// This item is empty
echo "Item $i references an empty field.\n";
continue;
}
echo "Item $i is a valid file.\n";
}
}