【发布时间】:2018-01-26 00:03:05
【问题描述】:
最近我遇到了通过 PHP 上传多个文件的问题。
在某处我看到了一些指导如何做到这一点,所以最后我是这样结束的:
$total = count($_FILES['ufile']['name'][$i]);
$target = "gallery/";
for($i=0; $i<$total; $i++) {
if(($_FILES['ufile']['type'][$i]== 'image/jpeg')
||($_FILES['ufile']['type'][$i]== 'image/gif')
||($_FILES['ufile']['type'][$i]== 'image/png')
&&($_FILES['ufile']['size'][$i]<2097152)
&&($_FILES['ufile']['error'][$i] == 0)) {
$image = $_FILES['ufile']["name"][$i];
$temp = explode(".", $_FILES['ufile']["name"][$i]);
$gallery_img[$i] = round(microtime(true)) . '.' . end($temp); //gallery is ready
$final_gallery[$i] = $gallery_img[$i] . ", ";
move_uploaded_file($_FILES['ufile']["tmp_name"][$i], $target . $gallery_img[$i]);
$wszystko_OK = true;
}
}
不幸的是,它不起作用。我不知道如何修复该代码。甚至可以在数组中使用 $_FILES 进行操作吗?我是 PHP 新手,所以如果你能解释一下如何做到这一点。
$temp = explode(".", $_FILES['ufile']["name"][$i]);
$gallery_img[$i] = round(microtime(true)) . '.' . end($temp);
^这段代码当然是用来生成随机文件名的,以免它们之间产生任何冲突。
$final_gallery[$i] = $gallery_img[$i] . ", ";
^这实际上是将所有这些文件名收集到变量中。我希望它看起来像这样:
1502916633.png、1502916893.png、1502916926.jpg
然后我会将这个变量插入到我的 MySQL 数据库中,然后读取它,删除逗号符号并显示多个图像。 提前感谢您的帮助!
【问题讨论】:
-
你的代码有一个问题,你用
[$i]定义$total,而$i还没有被定义。 -
我以为我定义了 $i,当我制作循环时。
-
PHP 不是这样工作的。你需要在使用之前定义
$i。定义$total后循环执行。 -
好的,现在它正在工作,但是在带有图像的文件夹中,我只有其中一个(我选择了三个图像)但是,在数据库中而不是一堆随机文件名中,我只有“数组”。
标签: php mysql file loops upload