簡體   English   中英

上傳大圖像時出現問題

[英]Issue when uploading large images

嗨,我有從教程中挑選的這個。 鏈接到這里嘗試幫助我稍微了解一下。

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

也許這更好,更拉鏈

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

嘗試使用下面的示例,它是標准的示例,它將使您可以控制問題中提到的文件大小(即$ _FILES [“ file”] [“ size”] <20000) 示例。

如果不發布您的警告,我們將無法確定真正的問題所在。 但是,我懷疑這與您的php.ini文件(PHP用來保存配置的文件)有關。

您在鏈接上提到的編碼器尚未嘗試限制文件大小。 盡管您的代碼中沒有明確聲明文件大小不應大於20MB,但這並不意味着您可以上傳任何大小的文件。

在您的情況下,php.ini中必須有一些指令可以阻止您上傳大於20M的文件。 找到php.ini(根據您的操作系統,在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM