【发布时间】:2021-09-16 14:51:32
【问题描述】:
我有一个处理图像上传的 foreach 循环。当我添加多个图像时,它们会获得一个包含唯一 ID 和时间戳的文件名,使用 $filebase = uniqid() . '_' . time();
处理图像时,它们具有相同的图像名称,我不明白为什么 foreach 循环没有给出唯一的文件名?
我将 $temp 变量分配给 foreach 循环的索引,其中包含以下行:$temp = $_FILES['standard-upload-files']['tmp_name'][$index]; 所以我不明白为什么它不增加新值?
图像被正确移动到目标文件夹(尽管名称相同),所以我知道这不是我的 HTML 表单或初始 foreach 循环的问题。
if(isset($_POST['submit-images'])) {
foreach($_FILES['standard-upload-files']['name'] as $index => $filename ) {
if($_FILES['standard-upload-files']['error'][$index] === 0 ) {
$temp = $_FILES['standard-upload-files']['tmp_name'][$index];
$filebase = uniqid() . '_' . time();
move_uploaded_file($temp, "images-download/{$filebase}");
}
} // main foreach
} // isset($_POST)
【问题讨论】:
-
你会得到什么:在你定义它之后回显 $temp,并在关闭 foreach 循环之前取消设置 $temp?
-
@Manny 当我回显 $temp 时,我只获取了我上传的图像数量的临时文件的路径(即两个图像的两个路径)。
-
你能分享一些输出吗?
-
@Manny - 你是什么意思?如果为文件名提供相同的名称,例如如果我上传两个文件,它们都会根据
$filebase变量获得相同的文件名60e3ad5989fbb_1625533785。我没有包含 .jpg 扩展名等的代码,因此我可以在问题中将代码保持在最低限度)。
标签: php file foreach upload filenames