【发布时间】:2016-01-25 23:26:36
【问题描述】:
<?
if(isset($_POST['upload'])) {
if(empty($_FILES['image'])) {
echo "<p class=\"error\">Please upload an image...</p>\n";
} else {
$file_name= $_FILES['image']['name']; // original name
$file_type = $_FILES['image']['type'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name']; // temporary location on server
$file_error = $_FILES['image']['error']; // reference to future error
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
if($file_ext != "jpeg" || "jpg" || "gif" || "png") {
echo "<p class=\"error\">Please upload an image that has the extension .jpg/jpeg, .gif, or .png.</p>\n";
} else {
if($file_size > (10000000)) {
echo "<p class=\"error\">Please upload an image that does not exceed the file size of 10MB.</p>\n";
} else {
if($file_error) {
echo "<p class=\"error\">Sorry, an unexpected error occurred: ".$file_error."</p>\n";
} else {
$f_rename = "pfp/".time().".png";
move_uploaded_file($file_tmp,$f_rename);
}
}
}
}
}
?>
<!doctype html>
<html>
<head>
<title>Upload</title>
</head>
<body>
<form action="upload_test_image.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" name="upload" value="Upload"/>
</form>
</body>
</html>
由于无法通过文件扩展名检查,我无法上传任何图片。在我写这篇文章时,我还试图剖析问题是否正是扩展验证问题(可能只是打印出我发出的错误声明,因为它是第一个 if...否则声明)。任何人都可以帮助找到该代码或此代码中的问题吗?
【问题讨论】:
-
要进行故障排除,请尝试输出
$file_ext的值(以及$file_name的值)。 -
它返回空,所以显然这不是扩展错误,如果我只是按下表单中的上传按钮,它会给出同样的错误,所以问题在于实际上传图像。感谢您的提示。
标签: php html webforms image-uploading