我试图通过PHP将图像发布到我的网站文件目录。这个确切的代码适用于网站上的另一个页面,但我有一个问题,让它在这个页面上工作:
if(isset($_FILES['files'])){
$errors= array();
for($i=0;$i<count($_FILES['files']['tmp_name']); $i++){
$file_name = $_FILES['files']['name'][$i];
$file_size =$_FILES['files']['size'][$i];
$file_tmp =$_FILES['files']['tmp_name'][$i];
$file_type=$_FILES['files']['type'][$i];
if($file_size > 2097152){
$errorMessage2.="File size must be less than 2 MB";
}
$img_dir="../images/property_directory";
if(is_dir($img_dir)==false){
mkdir("$img_dir", 0700, true); // Create directory if it does not exist
}
if(is_dir("$img_dir/".$file_name)==false){
move_uploaded_file($file_tmp,"$img_dir/". $file_name);
$filePath[$i] = "$img_dir/" . $file_name;
}else{// rename the file if another one exist
$new_dir="$img_dir/".$file_name.time();
rename($file_tmp,$new_dir) ;
$filePath[$i] = "$img_dir/" . $file_name.time();
}
}
}
if(empty($errorMessage2)){
$filePathArr = "";
foreach ($filePath as $v) {
$filePathArr .= "$v ";
}
foreach循环抛出错误"为foreach()提供的参数无效"我不认为数组是空的,因为我使用files[]按钮为它提供了一个文件。
你的for循环有一个错误。你应该计算$_FILES['files']['name']
,而不是$_FILES['files']['tmp_name']
。请看下面的代码:
for($i=0;$i<count($_FILES['files']['name']); $i++) {
....
}
我想分享我的经验。对我来说,问题出在HTML表单元素上。
我最初将文件类型命名为"images"
<input type="file" name="images" class="form-control-file" multiple>
这将工作,如果我只处理一个图像。然而,由于我上传了多张图片,我不得不将其更改为"images[]"作为数组。
<input type="file" name="images[]" class="form-control-file" multiple>