如何使用PHP在上传图像之前检查高度和宽度。
我必须先上传图片并使用“getimagesize()”吗?或者我可以在使用PHP上传之前检查一下吗?
<?php
foreach ($_FILES["files"]["error"] as $key => $error) {
if(
$error == UPLOAD_ERR_OK
&& $_FILES["files"]["size"][$key] < 500000
&& $_FILES["files"]["type"][$key] == "image/gif"
|| $_FILES["files"]["type"][$key] == "image/png"
|| $_FILES["files"]["type"][$key] == "image/jpeg"
|| $_FILES["files"]["type"][$key] == "image/pjpeg"
){
$filename = $_FILES["files"]["name"][$key];
if(HOW TO CHECK WIDTH AND HEIGHT)
{
echo '<p>image dimenssions must be less than 1000px width and 1000px height';
}
}
?>
答案 0 :(得分:92)
我们可以轻松地使用临时文件。
$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
答案 1 :(得分:8)
这就是我解决它的方法。
$test = getimagesize('../bilder/' . $filnamn);
$width = $test[0];
$height = $test[1];
if ($width > 1000 || $height > 1000)
{
echo '<p>iamge is to big';
unlink('../bilder/'.$filnamn);
}
答案 2 :(得分:5)
如果文件在$_FILES
数组中(因为它是以Multipart形式选择的),它已经上传到服务器(通常是/ tmp或类似的文件路径),所以你可以继续并使用php中的getimagesize()
函数来获取维度(包括所有细节作为数组)。
答案 3 :(得分:4)
在实际上传发生之前,您需要在客户端上执行某些操作 使用(服务器端)php,您只能在文件上传后检查维度,或者在上传图像时使用upload hooks 可能检查维度(来自图像文件标题数据)。
所以你的选择是flash,也许是带有FileAPI的html5(没有测试过,也许那是不可行的),java-applet,silverlight,......
答案 4 :(得分:3)
要使用getimagesize(path_name)
获取图像的宽度和高度,此函数将返回包含height,width,image_type常量和其他图像相关信息的数组。通过以下代码,您可以实现。
注意 -
需要传递图像的临时位置,并在使用move_upload_file()
之前使用以下代码,否则它会将文件移动到目标路径,而您将无法获得所需的图像结果
$imageInformation = getimagesize($_FILES['celebrity_pic']['tmp_name']);
print_r($imageInformation);
$imageWidth = $imageInformation[0]; //Contains the Width of the Image
$imageHeight = $imageInformation[1]; //Contains the Height of the Image
if($imageWidth >= your_value && $imageHeight >= your_value)
{
//Your Code
}
答案 5 :(得分:0)
array getimagesize ( string $filename [, array &$imageinfo ] )
getimagesize()函数将确定任何给定图像文件的大小,并返回尺寸以及文件类型和要在普通HTML IMG标记内使用的高度/宽度文本字符串以及相应的HTTP内容类型。
如需更多更新,请访问网站: http://www.php.net/manual/en/function.getimagesize.php
答案 6 :(得分:0)
非常重要 - 如果您使用Dreamweaver进行编码,并且尝试使用$_FILES[anyFormName][tmp_name]
获取图像大小,则会在实时视图中显示错误。我花了一些时间才弄清楚这一点。