【发布时间】:2010-07-09 18:04:13
【问题描述】:
这是我的代码,我想知道我做错了什么,它没有显示名称。
<form action = "self.php" method="post" enctype="multipart/form-data">
<input type="file" name="imageURL[]" id="imageURL" multiple="" />
<input type="submit" value="submit" name="submit" />
</form>
以及不起作用的处理信息:
foreach ($_FILES['imageURL'] as $files[]) {
echo $files['file'];
}
编辑:
将我的 foreach 循环更改为:
foreach ($_FILES['imageURL'] as $file) {
echo $file['name'];
}
仍然没有打印出来。
但是,当我这样做时:
foreach ($_FILES['imageURL']['name'] as $filename) {
echo $filename;
}
文件名会打印出来。不过我不知道这意味着什么。
已解决更新:
正如 John Conde 所链接的,上传多个文件时的阵列交错结构与上传单个文件时不同。要使用foreach,我们必须重构数组。
$files=array();
$fdata=$_FILES['imageURL'];
if(is_array($fdata['name'])){
for($i=0;$i<count($fdata['name']);++$i){
$files[]=array(
'name' =>$fdata['name'][$i],
'type' => $fdata['type'][$i],
'tmp_name'=>$fdata['tmp_name'][$i],
'error' => $fdata['error'][$i],
'size' => $fdata['size'][$i]
);
}
}else $files[]=$fdata;
现在我们可以使用 foreach 来循环:
foreach ($files as $file) {
echo $file['name'];
}
【问题讨论】:
-
“已解决更新”下的代码相当糟糕。 is_array($fdata['name']) 将始终评估为 false,这意味着大多数示例永远不会运行。请参阅此页面上接受的答案。