您好我从教程中选择了这个。 Link here请尝试帮助我理解这一点。
我想知道编码器是如何尝试控制图像上传的大小的。 (我在代码的其他地方看到明显限制大小,即($_FILES["file"]["size"] < 20000)
)
我提出上述问题的原因是我上传较小的图片时效果不错,但较大的图片会出现一系列警告!
感谢您的帮助。
代码
<?php
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$image =$_FILES["imagefile"]["name"];
$tempext = getExtension($image);
$extfile= mt_rand().".".$tempext;
$uploadedfile = $_FILES['imagefile']['tmp_name'];
if ($extfile)
{
$filename = stripslashes($extfile);
$extension = getExtension($filename); // return the type of image
$extension = strtolower($extension); // convert result to lowercase
if (($extension != "jpg") && ($extension != "jpeg")
&& ($extension != "png") && ($extension != "gif"))
{
$errors=1;
}
else
{
$size=filesize($_FILES['imagefile']['tmp_name']);
if($extension=="jpg" || $extension=="jpeg" )
{
$uploadedfile = $_FILES['imagefile']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
}
else if($extension=="png")
{
$uploadedfile = $_FILES['imagefile']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
}
else
{
$src = imagecreatefromgif($uploadedfile);
}
list($width,$height)=getimagesize($uploadedfile);
$newwidth=600;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0, $newwidth, $newheight, $width, $height);
$newwidth1=185;
$newheight1=($height/$width)*$newwidth1;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
imagecopyresampled($tmp1,$src,0,0,0,0, $newwidth1, $newheight1, $width, $height);
$filename = "upload/". $extfile;
$filename1 = "upload/thumbs/". $extfile;
$etest1=imagejpeg($tmp,$filename,100);
$etest2=imagejpeg($tmp1,$filename1,100);
imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
}
}
?>
答案 0 :(得分:1)
也许这更好,更拉链
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2097152)) //2 MB
答案 1 :(得分:0)
尝试使用下面的示例它是标准的,并且可以控制您在问题中提到的文件大小(即$ _FILES [“file”] [“size”]&lt; 20000) example here.
答案 2 :(得分:0)
如果不发布警告,我们无法确定真正的问题。但是我怀疑这与你的php.ini文件有关(它是PHP保存配置的文件)。
您在链接上提到的编码器并未尝试限制文件大小。虽然您的代码中没有明确的声明,说明文件大小不应大于20MB,但这并不意味着您可以上传任何您想要的大小的文件。
在您的情况下,php.ini中必须有一些指令阻止您上传大于20M的文件。一旦你找到php.ini(谷歌在哪里找到它,基于你的操作系统)你可以改变php.ini的配置,如下所示:
; Max size allowed for file upload
upload_max_filesize = 20M
; This must be greater than or equal to upload_max_filesize
post_max_size = 21M