[英]PHP file upload incorrect file type
我正在制作一个社交网站,并试图建立该网站以便您可以更改头像,这是我的头像更改过程代码:
mysql_connect("website", "dbuser", "dbpass");
mysql_select_db("dbtable");
$upload_path = "./account/{$_SESSION["id"]}/";
$pw = $_POST['password'];
$email = $_POST['email'];
$q = mysql_query("SELECT * FROM `users` WHERE `email`='$email' AND `password`='$pw' LIMIT 1");
if(!$q) die(mysql_error());
if(mysql_num_rows($q) == 0) die("Authorization failed.");
$allowed = array('png');
$filename = $_FILES['newimage']['name'];
if(!($_FILES['newimage']['type'] == 'image/png')) {
die('The file is incorrect, only PNG files are allowed.');
}
$max_filesize = 10485760;
if(filesize($_FILES['newimage']['tmp_name']) > $max_filesize)
die('The file you attempted to upload is too large.');
if(!is_writable($upload_path))
die('You cannot upload to the specified directory, please CHMOD it to 777.');
if(move_uploaded_file($_FILES['newimage']['tmp_name'],"./account/".$_SESSION['id']."/profile.png"))
echo 'Successfully changed avatar.';
else
echo 'There was an error during the file upload. Please try again.';
这里的问题是它总是说“文件不正确,只允许PNG文件。” 我没有发现这段代码有什么问题,我该如何解决?
在此行:
if(!($_FILES['newimage']['type'] == 'image/png')) { die('The file is incorrect, only PNG files are allowed.'); }
您应该将该if语句更改为:
$allowedImages = array('image/png'); if(!in_array($_FILES['newimage']['type'], $allowedImages)) { die('The file is incorrect, only PNG files are allowed.'); }
现在,您可以通过将图像类型添加到数组中来添加图像类型,如下所示:
$allowedImages = array('image/png', 'image/jpg', 'image/gif');
因为您添加的3行是为了检查文件类型是否仅与图像/ PNG相同。
因为这:
if(!($_FILES['newimage']['type'] == 'image/png')) {
die('The file is incorrect, only PNG files are allowed.');
}
您的意思是:如果文件类型不是.PNG,请退出当前脚本并说只允许png,
您可以删除此文件,但可以上传任何文件类型,
但由于您只需要图片,因此请更改if语句以允许png,jpg,gif和要允许的任何图像类型。 (有关此信息,请参见@robin的答案)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.