Показать сообщение отдельно
Старый 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 вне форума