我有一个脚本可以将一些图像上传到目录。我意识到在数组的帮助下。因此我得到了这段代码:
$allowed_extension = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif');
$errors = array();
$output = array();
if(!empty($_FILES['image']['tmp_name'])){
foreach($_FILES['image']['name'] as $key => $array_value){
if(!in_array(pathinfo($_FILES['image']['name'][$key], PATHINFO_EXTENSION), $allowed_extension)){
die("Die!");
}
}
foreach($_FILES['image']['name'] as $key => $array_value){
$file_name = $_FILES['image']['name'][$key];
$file_size = $_FILES['image']['size'][$key];
$file_tmp = $_FILES['image']['tmp_name'][$key];
$file_extension = pathinfo($file_name, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
if (!in_array($file_extension, $allowed_extension)){
$errors[$file_name][] = "format $file_extension in image $file_name is not accepted";
continue;
}
if ($file_size > 2097152){
$errors[$file_name][] = "maxsize of 2MB on $file_name has reached";
}
if (count($errors) == 0){
$dir = "a/b/c";
if (is_dir($dir)){
mkdir("a/b/c/tmp_images", 0755);
}else{
mkdir("a/b/c", 0755);
mkdir("a/b/c/tmp_images", 0755);
}
$path = "a/b/c/tmp_images";
$prifix = basename($file_name, "." . $file_extension);
//var_dump ($prifix);
$uploadfile = $path . "/" . $file_name;
$x = 0;
while (file_exists($uploadfile)){
$x ++;
$uploadfile = "{$path}/{$prifix}-{$x}.{$file_extension}";
}
if (move_uploaded_file($file_tmp, $uploadfile)){
$file_name = basename($uploadfile);
$output [$file_name] = "OK";
}else{
$output[$file_name] = "Failure while Uploading!";
$errors[$file_name][] = "Failure: Can't move uploaded pictures!";
}//else...
}//if(count($errors))...
}//foreach($_FILES['image']['name']...
}//if(!empty($_FILES['image']['tmp_name'])...
现在我的第一个问题是:当我有两种不同类型的文件类型时,上传将被中止并显示错误消息“Die!”将显示。正如在代码中可以看到的那样,第一个foreach-part将会这样做。第二个foreach-part正在做我真正想要显示的内容但是当我离开第一个foreach-part以防出现一个错误和一个正确的文件类型时,将进行上传。问题是,用户在提交数据后无法进行任何更改。因此必须中止上传。
我的第二个问题是:当我离开第一个foreach-part时,它将只显示“array”而不是显示array [0]的文本,其中包含错误消息,如果文件类型或大小错误。所以输出不应该是“数组”它应该是“$ file_name上达到2MB的最大值”
所以我不知道如何解决这个问题。如果有人可以告诉我该怎么做,我真的很感激。非常感谢。
答案 0 :(得分:1)
不要使用模具(“模具!”);在你的代码中,因为它终止了脚本的执行。提供HTML以查找路由原因。