1

こんにちは、チュートリアルから選んだこれがあります。リンクはこちらこれを少し理解するのを手伝ってください。

  1. コーダーがアップロードする画像のサイズをどのように制御しようとしたかを知りたいです。(サイズを明確に制限しているコードの他の場所を見たことがあります($_FILES["file"]["size"] < 20000)

  2. 上記の質問をする理由は、小さい画像をアップロードすると問題なく動作しますが、大きい画像をアップロードすると一連の警告が表示されるからです!

ご協力ありがとうございました。

コード

<?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);
}
}
?>
4

3 に答える 3

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
于 2013-08-18T08:48:53.187 に答える
0

警告を投稿しないと、実際の問題が何であるかを判断できません。ただし、それは php.ini ファイル (PHP が構成を保持するファイル) に関連していると思われます。

リンクで言及しているコーダーは、ファイルサイズを制限しようとはしていません。ファイル サイズが 20 MB を超えてはならないという明示的なステートメントがコード内にありませんが、これは、任意のサイズのファイルをアップロードできるという意味ではありません。

あなたの場合、php.ini に、20M を超えるファイルをアップロードできないようにするディレクティブが必要です。php.ini を見つけたら (OS に基づいて、Google で見つけます)、以下のように 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
于 2013-08-18T09:02:06.143 に答える
0

以下の例を使用してみてください。これは標準であり、質問で言及したファイルサイズを制御できます(つまり、$_FILES["file"]["size"] < 20000) 例はこちらです。

于 2013-08-18T08:44:54.933 に答える