|
|
|
|
|
для: GhosTer
(10.06.2005 в 18:50)
| | Дело в том, что при загрузке файлов в тэге form обязательно должен присутствовать атрибут enctype, иначе файл передаваться не будет
<form enctype='multipart/form-data' action=testaddpic.php method=post>
|
| |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 13:40)
| | | |
|
|
|
|
|
|
|
для: 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> </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($path, 0644);
$url_photo = $path;
}
$bigimage="proba/photo/big".$unicname.$ext;
$smallimage ="proba/photo/small".$unicname.$ext;
$d_w=133;
$d_h=100;
// вызываем функцию изменения размера
resizeimg($bigimage, $smallimage, 133, 100);
// Функция уменьшения картинки
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_img, 255, 255, 255);
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_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($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 | |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 22:22)
| | Лучше разбить HTML-форму и её обработчик по отдельным файлам - тогда приложение будет вести себя более предсказуемо и будет меньше возможностей совершить ошибку. | |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 22:22)
| | Хм... а почему у вас в конце стоит
ведь эти строки говорят "если переменная $error пустая нужно включать обработчик" - помоему по логике нужно поставить везде
| |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 22:22)
| | Вообще интерсно... дурдом какой-то :))) закомментировал редирект - он всё-равно срабатывает - обожаю такие вещи :))) | |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 22:22)
| | Сейчас попробую разобраться... А в настройках сервера ничего не меняли? | |
|
|
|
|
|
|
|
для: cheops
(09.06.2005 в 22:15)
| | Файл со скриптом должен называться addnewpicform.php!
А перекидывать он должен после загрузки файлов! Вот вчем и проблема!
И выдача ошибок почемуто не работает! Хатя когда я написал этот код, во время проверки, все работало, а теперь накрылось медным тазом! Нечего не смог понять! Выручайте хлопцы! | |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 13:40)
| | А как скрипт должен называться? Меня сразу перебрасывает на index.php. С другой стороны в тэге <form> стоит обработчик addnewpicform.php... | |
|
|
|
|
|
|
|
для: GhosTer
(09.06.2005 в 13:40)
| | Всем спасибо за помощь :-{ | |
|
|
|
|