Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: загрузка картинки

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (11.06.2005 в 00:20)   письмо автору
 
   для: GhosTer   (10.06.2005 в 18:50)
 

Дело в том, что при загрузке файлов в тэге form обязательно должен присутствовать атрибут enctype, иначе файл передаваться не будет
<form enctype='multipart/form-data' action=testaddpic.php method=post>

   
 
 автор: GhosTer   (10.06.2005 в 20:39)   письмо автору
 
   для: GhosTer   (09.06.2005 в 13:40)
 

Может кто глянет?

   
 
 автор: GhosTer   (10.06.2005 в 18:50)   письмо автору
 
   для: cheops   (09.06.2005 в 23:08)
 

Извините что долго не отвечал!
Я разбил его на 3 документа:
addpicform.php
<?
  
print "<html>";
  print 
"<body>";
  print 
"<form action=testaddpic.php method=post>";
  print 
"<table border=0>";
  print 
"<tr><td><nobr>Описание краткое: </nobr></td><td><input class=input type=text name=opissmall size=74 maxlength=100 value=".$opissmall."></td></tr>";
  print 
"<tr><td><nobr>Описание полное: </nobr></td><td><textarea class=input  cols=56 rows=10 name=opisbig>".$opisbig."</textarea></td></tr>";
  print 
"<tr><td><nobr>Фото(не более 500 Кб):</nobr></td><td><input class=input type=file name=photo size=61 ></td></tr>";
  print 
"<tr><td height=50 valign=bottom>&nbsp;</td><td><input class=button type=submit name=send value='ЗАГРУЗИТЬ'></td><td></td></tr>";
  print 
"</table>";
  print 
"</form>";
  print 
"</body>";
  print 
"</html>";
?>

testaddpic.php
<?
  
print $photo;
  
$error="";
  if (empty(
$opissmall)) // если не введено краткое описание
  
{
    
$error $error."<LI>Вы не ввели краткое описание\n";
  }
  if (empty(
$opisbig)) // если не введено полное описание
  
{
    
$error $error."<LI>Вы не ввели полное описание\n";
  }
  if (!empty(
$_FILES['photo']['tmp_name']) && $_FILES['photo']['tmp_name'] != "-")
  {
    
// Проверяем не больше ли файл 512 Кб
    
if($_FILES['photo']['size'] > 512)
    {
    
$error $error."<LI>Слишком большая фотография файл (более 512 Kb)\n";
    }
    
// Извлекаем из имени файла расширение
    
$ext strrchr($_FILES['photo']['name'], "."); 
    
// Разрешаем загружать файлы только определённого форматм
    
$extentions = array(".jpg",".gif");
    
// Формируем путь к файлу    
    
if(!in_array($ext$extentions))
    {
    
$error $error."<LI>Неверный формат файла(правильный формат: jpg или gif)\n";
    }
    
// Перемещаем файл из временной директории сервера в
    // директорию /photo Web-приложения
  
}
  else
  {
    
$ext strrchr($photo".");
print 
$ext."/n";
    
$error $error."<LI>Фотография отсутствует\n";
  }
  if (
error=="")
  {
  require_once(
"addpic.php");
  }
  else
  {
  print 
"<P><font color=green>Во время добавления записи произошли следующие ошибки:</font></P>\n";
  print 
"<UL>\n";
  print 
$error;
  print 
"</UL>\n";
  require_once(
"addpicform.php");
  }
?>

addpic.php
<?
    $unicname
=date();
      
/* создаем файл с именем вида "rec.+время добавления сообщения" */
    
$file fopen("photo/txt.".$unicname,"w");
    
// записываем информацию в файл, по одной строчке на каждое поле
    
fputs($file,$opissmall."\n");
    
fputs($file,$opisbig."\n");
    
// закрываем файл
    
fclose($file);
    
$url_photo "";
    
// Перемещаем файл из временной директории сервера в
    // директорию /photo Web-приложения
    
     
    
if (!empty($_FILES['photo']['tmp_name']) && $_FILES['photo']['tmp_name'] != "-")
    {
     
$ext strrchr($_FILES['photo']['name'], "."); 
     
$path="photo/big".$unicname.$ext;
     if (
copy($_FILES['photo']['tmp_name'], $path))
     {
       
// Уничтожаем файл во временной директории
       
unlink($_FILES['photo']['tmp_name']);
       
// Изменяем права доступа к файлу
       
chmod($path0644);
       
$url_photo $path;
     }
       
$bigimage="proba/photo/big".$unicname.$ext;
       
$smallimage ="proba/photo/small".$unicname.$ext
       
$d_w=133
       
$d_h=100
       
// вызываем функцию изменения размера 
       
resizeimg($bigimage$smallimage133100); 
       
// Функция уменьшения картинки
       
function resizeimg($filename$smallimage$w$h
       { 
         
// Имя файла с масштабируемым изображением 
         
$filename "../".$filename
         
// Имя файла с уменьшенной копией. 
         
$smallimage "../".$smallimage;     
         
// определим коэффициент сжатия изображения, которое будем генерить 
         
$ratio $w/$h
         
// получим размеры исходного изображения 
         
$size_img getimagesize($filename); 
         
// Если размеры меньше, то масштабирования не нужно 
         
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true
         
// получим коэффициент сжатия исходного изображения 
         
$src_ratio=$size_img[0]/$size_img[1]; 

         
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились 
         // пропорции исходного изображения 
         
if ($ratio<$src_ratio
         { 
           
$h $w/$src_ratio
         } 
         else 
         { 
           
$w $h*$src_ratio
         } 
         
// создадим пустое изображение по заданным размерам 
         
$dest_img imagecreatetruecolor($w$h);   
         
$white imagecolorallocate($dest_img255255255);        
         if (
$size_img[2]==2)  $src_img imagecreatefromjpeg($filename);                       
         else if (
$size_img[2]==1$src_img imagecreatefromgif($filename);                       
         else if (
$size_img[2]==3$src_img imagecreatefrompng($filename); 

         
// масштабируем изображение     функцией imagecopyresampled() 
         // $dest_img - уменьшенная копия 
         // $src_img - исходной изображение 
         // $w - ширина уменьшенной копии 
         // $h - высота уменьшенной копии         
         // $size_img[0] - ширина исходного изображения 
         // $size_img[1] - высота исходного изображения 
         
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);                 
         
// сохраняем уменьшенную копию в файл 
         
if ($size_img[2]==2)  imagejpeg($dest_img$smallimage);                       
         else if (
$size_img[2]==1imagegif($dest_img$smallimage);                       
         else if (
$size_img[2]==3imagepng($dest_img$smallimage); 
         
// чистим память от созданных изображений 
         
imagedestroy($dest_img); 
         
imagedestroy($src_img); 
         return 
true;          
       }   
    }
      print 
"<HTML><HEAD>\n";
      print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";
      print 
"</HEAD></HTML>\n";
?>


Вроде старых ошибок больше нет!
Но появилась нова: В любом случае считает что картинка отсутствует!
Посмотрите пожалуй100.
В чем ошибка?
SOS

   
 
 автор: cheops   (09.06.2005 в 23:08)   письмо автору
 
   для: GhosTer   (09.06.2005 в 22:22)
 

Лучше разбить HTML-форму и её обработчик по отдельным файлам - тогда приложение будет вести себя более предсказуемо и будет меньше возможностей совершить ошибку.

   
 
 автор: cheops   (09.06.2005 в 22:57)   письмо автору
 
   для: GhosTer   (09.06.2005 в 22:22)
 

Хм... а почему у вас в конце стоит
if (empty($error))

ведь эти строки говорят "если переменная $error пустая нужно включать обработчик" - помоему по логике нужно поставить везде
if (!empty($error))

   
 
 автор: cheops   (09.06.2005 в 22:48)   письмо автору
 
   для: GhosTer   (09.06.2005 в 22:22)
 

Вообще интерсно... дурдом какой-то :))) закомментировал редирект - он всё-равно срабатывает - обожаю такие вещи :)))

   
 
 автор: cheops   (09.06.2005 в 22:43)   письмо автору
 
   для: GhosTer   (09.06.2005 в 22:22)
 

Сейчас попробую разобраться... А в настройках сервера ничего не меняли?

   
 
 автор: GhosTer   (09.06.2005 в 22:22)   письмо автору
 
   для: cheops   (09.06.2005 в 22:15)
 

Файл со скриптом должен называться addnewpicform.php!
А перекидывать он должен после загрузки файлов! Вот вчем и проблема!
И выдача ошибок почемуто не работает! Хатя когда я написал этот код, во время проверки, все работало, а теперь накрылось медным тазом! Нечего не смог понять! Выручайте хлопцы!

   
 
 автор: cheops   (09.06.2005 в 22:15)   письмо автору
 
   для: GhosTer   (09.06.2005 в 13:40)
 

А как скрипт должен называться? Меня сразу перебрасывает на index.php. С другой стороны в тэге <form> стоит обработчик addnewpicform.php...

   
 
 автор: GhosTer   (09.06.2005 в 22:02)   письмо автору
 
   для: GhosTer   (09.06.2005 в 13:40)
 

Всем спасибо за помощь :-{

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования