Показать сообщение отдельно
Старый 29.11.2005, 01:16     # 3
Stasik
Registered User
 
Аватар для Stasik
 
Регистрация: 27.03.2002
Адрес: дома
Сообщения: 1 660

Stasik Известность не заставит себя ждатьStasik Известность не заставит себя ждать
ладно... умничать не буду .... дам код:

PHP код:
<?
//файл передаёшь стандартной формой..... там енкод мултипарт не забудь <input name="userfile" type="file" />
//(C) [stasik.com]
$dir="/home/user/public_html/fotos/"; //0777

//тут можно ещё и preg_replace`ом почистить.....
$uploadfile = $dir . basename($_FILES['userfile']['name']);
$uploadfile = strtolower($uploadfile);
$uploadthumb = $dir . basename($_FILES['userfile']['name']);
$uploadthumb = strtolower($uploadthumb);

//есть файл или нет
if(file_exists($uploadfile)){echo "Filename already exists or no file. Rename or think a bit longer."; exit;};

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   echo "Ok file is here, lets look at it:\n<br>";
} else {
   echo "Possible file upload attack!\n"; exit;
}

//смотрим файл
$result_array = getimagesize($uploadfile);

//фотки думаю, только в жпег заливают
if ($result_array !== false) {
   $mime_type = $result_array['mime'];
   switch($mime_type) {
       case "image/jpeg":
           echo "jpeg... ok";
           break;
       default:
           echo "image, but no jpeg, deleted"; @unlink($uploadfile); exit;
   }
} else {
   echo "file is not a valid image file, deleted"; @unlink($uploadfile); exit;


//размерчики
$width=$result_array[0];
if($width>3000){echo "too big, deleted."; @unlink($uploadfile); exit;}
if($height>3000){echo "too big, deleted."; @unlink($uploadfile); exit;}

//думаем о размерчиках нэйла (тут сам ломай голову.. я так сделал просто и сердито, но с пропорциями иногда траблы)
if($height>=$width){
$factor=125/$width;
}else{
$factor=95/$height;
}

$nwidth=round($width*$factor);
$nheight=round($height*$factor);

//resize on linux тоже quick&dirty можно и imgmagick... хмм и gd может тоже
$tmpimg = tempnam($dir, "TEMP");
system("djpeg $uploadfile >$tmpimg");
system("pnmscale -xy $nwidth $nheight $tmpimg | cjpeg -smoo 10 -qual 50 >$uploadthumb");

unlink($tmpimg);

//усё
?>
__________________
Всё будет хорошо!

Последний раз редактировалось Stasik; 29.11.2005 в 01:24.
Stasik вне форума