我正在尝试编写一个只在上传时接受PNG图像的上传脚本。上传脚本工作正常但是当我添加png图像检测时,它会中断。
以下是我设置的方法:
if ($_FILES) {
if ($_FILES["file"]["type"] == "image/png") {
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
} else { echo "Not A PNG…";
}
}
当我上传PNG图片时,我收到'not a png'错误 - 任何想法?
答案 0 :(得分:3)
看起来您在IF语句中引用了错误的文件:
if ($_FILES["file"]["type"] == "image/png") {
应该是
if ($_FILES["uploadedfile"]["type"] == "image/png") {
("文件"需要"上传文件")
答案 1 :(得分:2)
我看到有些服务器没有在$ _FILES变量中添加mime类型的image / png ......有一点点CPU重的方式:
if (@imagecreatefrompng($_FILES["file"]["tmp_name"])
当您使用GD库打开图像画布时,此处的性能会略微降低
如果GD库的性能或缺乏是一个问题,只需检查扩展名:
if (strtolower(end(explode('.',$_FILES["file"]["name"])) == 'png')
注意强>
如果您想使用imagecreatefrompng功能,建议确保安装GD:if (function_exists('imagecreatefrompng'))
重要强> 如果你对内存使用情况保持谨慎(你应该这样做)
if ($image = @imagecreatefrompng($_FILES["file"]["tmp_name"]) {
// Do something
imagedestroy($image);
}
答案 2 :(得分:2)
$_FILES[...]['type']
。它只是一个任意的,用户提供的字符串,可能与实际文件有关,也可能没有。error_reporting(E_ALL); ini_set('display_errors', true);
,这有助于您找到特定的拼写错误。2和4的示例:
if (!empty($_FILES['uploadedfile'])) {
if ($_FILES['uploadedfile']['error'] !== UPLOAD_ERR_OK) {
die('Error during upload');
}
if (exif_imagetype($_FILES['uploadedfile']['tmp_name']) !== IMAGETYPE_PNG) {
die('Wrong file type');
}
...
}