Php 如果文件名已经存在,如何删除文件?
我搜索了至少半个小时,但我无法找出我的代码有什么问题 这是:Php 如果文件名已经存在,如何删除文件?,php,html,file-io,Php,Html,File Io,我搜索了至少半个小时,但我无法找出我的代码有什么问题 这是: <?php $file = $_FILES["file"]; $filename = $_FILES["file"]["name"]; $tempdir = $_FILES["file"]["tmp_name"]; $error = $_FILES["file"]["error"]; $type = $_FILES["file"]["type"]; $size = $_FILES["file"]["size"]; $maxsi
<?php
$file = $_FILES["file"];
$filename = $_FILES["file"]["name"];
$tempdir = $_FILES["file"]["tmp_name"];
$error = $_FILES["file"]["error"];
$type = $_FILES["file"]["type"];
$size = $_FILES["file"]["size"];
$maxsize = 524288;
$allowedtypes = array("image/png", "image/jpg", "image/jpeg", "image/bmp");
$errormsg = "";
if(!empty($error))
{
switch($error)
{
case '1':
$errormsg = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
break;
case '2':
$errormsg = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
break;
case '3':
$errormsg = 'The uploaded file was only partially uploaded';
break;
case '4':
$errormsg = 'No file was uploaded.';
break;
case '6':
$errormsg = 'Missing a temporary folder';
break;
case '7':
$errormsg = 'Failed to write file to disk';
break;
case '8':
$errormsg = 'File upload stopped by extension';
break;
default:
$errormsg = 'No error code avaiable';
}
} elseif(empty($tempdir) || $tempdir == 'none') {
$errormsg = 'No file was uploaded..';
} elseif(!in_array($type, $allowedtypes) || $size > $maxsize) {
$errormsg = 'Either image type not supported or size is extending 512 KB';
} else {
$filename = $_SESSION["username"];
$extension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$path = 'profile_pictures/' . $filename . "." . $extension;
foreach($ext as $allowedtypes) {
if(file_exists($filename . "." . $ext)) unlink($filename . "." . $ext);
}
move_uploaded_file($tempdir, $path);
//for security reason, we force to remove all uploaded file
@unlink($file);
}
echo $path;
?>
如果我删除foreach循环,它会工作,但它不工作
为什么会这样?请提供帮助。foreach循环的参数不正确。正确的语法是:
foreach (array_expression as $value) {
statement;
}
$ext
是包含上载文件扩展名的字符串,$allowedtypes
是包含有效扩展名的数组。您试图在字符串上循环
foreach($ext as $allowedtypes) {
if(file_exists($filename . "." . $ext)) unlink($filename . "." . $ext);
}
应该是:
foreach($allowedtypes as $ext) {
if(file_exists($filename . "." . $ext)) unlink($filename . "." . $ext);
}
注意:我建议您发现这样的错误。这在开发过程中会有所帮助。另外,不要使用
@
——它会隐藏有用的错误消息。如果不想向用户显示错误消息,请关闭错误报告并记录它们。foreach循环的参数不正确。正确的语法是:
foreach (array_expression as $value) {
statement;
}
$ext
是包含上载文件扩展名的字符串,$allowedtypes
是包含有效扩展名的数组。您试图在字符串上循环
foreach($ext as $allowedtypes) {
if(file_exists($filename . "." . $ext)) unlink($filename . "." . $ext);
}
应该是:
foreach($allowedtypes as $ext) {
if(file_exists($filename . "." . $ext)) unlink($filename . "." . $ext);
}
注意:我建议您发现这样的错误。这在开发过程中会有所帮助。另外,不要使用
@
——它会隐藏有用的错误消息。如果不想向用户显示错误消息,请关闭错误报告并记录它们。@MohammadAreebSiddiqui:E\u NOT\u WORKING
不是有效的PHP错误消息。首先打开错误报告(请参阅我答案中的链接),看看是否有错误。@MohammadReebsiddiqui:E\u NOT\u WORKING
不是有效的PHP错误消息。首先打开错误报告(请参阅我答案中的链接),然后查看是否有任何错误。