[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка логотипа в директорию
cyberside
<form action="" method="post">
<
input type="file" name="fupload" /><input type="submit" name="post" />
</
form>


<?php
if (isset($_POST['post'])) {
if (!empty($_POST['fupload'])) {
$fupload = $_POST['fupload'];
$fupload = trim($fupload);
if ($fupload == '' or empty($fupload)) {
unset($fupload);
}
if (!isset($fupload) or empty($fupload) or $fupload == '') {
$logotype = "/modules/teams/logotypes/nologo.png";
} else {
$path_to_90_directory = '/modules/teams/logotypes/';
$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);
if (preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory . $filename);
}
if (preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory . $filename);
}
if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory . $filename);
}
$w = 180;
$w_src = imagesx($im);
$h_src = imagesy($im);
$dest = imagecreatetruecolor($w, $w);
if ($w_src > $h_src) {
imagecopyresampled($dest, $im, 0, 0, round((max($w_src, $h_src) - min($w_src, $h_src)) /
2), 0, $w, $w, min($w_src, $h_src), min($w_src, $h_src));
}
if ($w_src < $h_src) {
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src, $h_src), min($w_src,
$h_src));
}
if ($w_src == $h_src) {
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
}
$date = time();
imagejpeg($dest, $path_to_90_directory . $date . ".jpg");
$logotype = $path_to_90_directory . $date . ".jpg";
$delfull = $path_to_90_directory . $filename;
unlink($delfull);
}
echo $logotype;
} #ADD UPLOAD LOGO
} #EMPTY POST

?>


Не добавляет изображение в папку



Спустя 53 минуты, 44 секунды (13.08.2011 - 22:17) waldicom написал(а):
Нужно добавить enctype="multipart/form-data" в форму
<form action="" method="post" enctype="multipart/form-data" >

Спустя 5 минут, 51 секунда (13.08.2011 - 22:23) cyberside написал(а):
Проблема не решилась

Спустя 4 минуты, 7 секунд (13.08.2011 - 22:27) waldicom написал(а):
Пути абсолютные? Потому что если пути начинаются со слэша, то это корень диска, а в данном случае перед '/modules/teams/logotypes/' наверняка должен еще быть путь к этой директории на диске. Что-то типа
$path_to_90_directory = '/var/www/mysite/modules/teams/logotypes/';

Спустя 1 минута, 41 секунда (13.08.2011 - 22:29) m4a1fox написал(а):
Какие выдает ошибки? Тут нет экстрасенссов!

Спустя 2 минуты, 7 секунд (13.08.2011 - 22:31) cyberside написал(а):
Изменил на $path_to_90_directory = 'modules/teams/logotypes/'; изображение загрузилось, но оно полностью чорное... Вот для глаза php.cs-cups.ru

Спустя 11 часов, 41 минута, 27 секунд (14.08.2011 - 10:12) killer8080 написал(а):
cyberside
этот скрипт вообще работать не может
if (!empty($_POST['fupload'])) {
...
откуда возьмётся $_POST['fupload']?
Да и вообще много избыточных проверок, бесполезная операция move_uploaded_file и т.п.
Я так и не понял логику преобразования картинок. Нужно их привести к квадрату 180x180, с обрезкой или что?
Тут проще всё с нуля переписать, чем исправлять.

Спустя 4 минуты, 9 секунд (14.08.2011 - 10:16) cyberside написал(а):
Ну в идеале мне нужно, что бы изображение подгонялось под ширену 180

Спустя 36 минут, 22 секунды (14.08.2011 - 10:53) linker написал(а):
Вынеси код пережатия картинки под нужный размер в отдельную функцию, так будет легче читать код и дебажить.

Спустя 46 минут, 54 секунды (14.08.2011 - 11:40) killer8080 написал(а):
cyberside
накидал вариант, но не проверял, возможно есть ошибки. Пробуй
$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/modules/teams/logotypes/';

if(ulpoad_image('fupload', $upload_dir, 180, $message)){
echo 'Файл загружен: '.$message;
}
else{
echo 'Ошибка: '.$message;
}

function upload_image($name, $upload_dir, $dst_max_side, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}

$img = getimagesize($_FILES[$name]['tmp_name']);
if(!$img || strpos($img['mime'], 'image/') !== 0){
$message = 'загруженный файл не является изображением';
return false;
}

$func = 'imagecreatefrom'.substr($img['mime'], strpos($img['mime'], '/') + 1);
if(!function_exists($func)){
$message = 'формат изображения не поддерживается';
return false;
}

$src_im = $func($_FILES[$name]['tmp_name']);

$width = $img[0] >= $img[1] ? $dst_max_side : ($img[0] * $dst_max_side / $img[1]);
$height = $img[1] >= $img[0] ? $dst_max_side : ($img[1] * $dst_max_side / $img[0]);

$dst_im = imagecreatetruecolor($width, $height);

imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $img[0], $img[1]);
$file = rtrim($upload_dir, '/').'/'.time().'.jpg';
imagejpeg($dst_im, $file, 75);
imagedestroy($src_im);
imagedestroy($dst_im);
$message = $file;
return true;
}

Спустя 10 минут, 58 секунд (14.08.2011 - 11:51) cyberside написал(а):
Не загружает, да и ошибки никакой не выводит на экран...

Спустя 4 минуты, 22 секунды (14.08.2011 - 11:55) killer8080 написал(а):
включи error_reporting(E_ALL);

Спустя 3 минуты, 48 секунд (14.08.2011 - 11:59) cyberside написал(а):
Fatal error: Call to undefined function ulpoad_image() in /var/www/myhost/data/www/php.cs-cups.ru/index.php on line 7

if(ulpoad_image('fupload', $upload_dir, 180, $message)){

Спустя 2 минуты, 48 секунд (14.08.2011 - 12:02) killer8080 написал(а):
Цитата
Fatal error: Call to undefined function ulpoad_image()

странно, ты полностью скопировал код? Попробуй поменять местами вызов функции и объявление. Хотя это влиять не должно.

Спустя 55 секунд (14.08.2011 - 12:03) cyberside написал(а):
Ну вот весь код:

<form action="" method="post">
<input
type="file" name="fupload" /><input type="submit" />
</form>
<?php


$upload_dir = 'modules/teams/logotypes/';
if(ulpoad_image('fupload', $upload_dir, 180, $message)){
echo 'Файл загружен: '.$message;
}
else{
echo 'Ошибка: '.$message;
}
function upload_image($name, $upload_dir, $dst_max_side, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}

$img = getimagesize($_FILES[$name]['tmp_name']);
if(!$img || strpos($img['mime'], 'image/') !== 0){
$message = 'загруженный файл не является изображением';
return false;
}

$func = 'imagecreatefrom'.substr($img['mime'], strpos($img['mime'], '/') + 1);
if(!function_exists($func)){
$message = 'формат изображения не поддерживается';
return false;
}

$src_im = $func($_FILES[$name]['tmp_name']);

$width = $img[0] >= $img[1] ? $dst_max_side : ($img[0] * $dst_max_side / $img[1]);
$height = $img[1] >= $img[0] ? $dst_max_side : ($img[1] * $dst_max_side / $img[0]);

$dst_im = imagecreatetruecolor($width, $height);

imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $img[0], $img[1]);
$file = rtrim($upload_dir, '/').'/'.time().'.jpg';
imagejpeg($dst_im, $file, 75);
imagedestroy($src_im);
imagedestroy($dst_im);
$message = $file;
return true;
}
?>

Спустя 4 минуты, 59 секунд (14.08.2011 - 12:08) killer8080 написал(а):
а так?
<form action="" method="post" enctype="multipart/form-data">
<
input type="file" name="fupload" /><input type="submit" />
</
form>
<?php
function
upload_image($name, $upload_dir, $dst_max_side, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}

$img = getimagesize($_FILES[$name]['tmp_name']);
if(!$img || strpos($img['mime'], 'image/') !== 0){
$message = 'загруженный файл не является изображением';
return false;
}

$func = 'imagecreatefrom'.substr($img['mime'], strpos($img['mime'], '/') + 1);
if(!function_exists($func)){
$message = 'формат изображения не поддерживается';
return false;
}

$src_im = $func($_FILES[$name]['tmp_name']);

$width = $img[0] >= $img[1] ? $dst_max_side : ($img[0] * $dst_max_side / $img[1]);
$height = $img[1] >= $img[0] ? $dst_max_side : ($img[1] * $dst_max_side / $img[0]);

$dst_im = imagecreatetruecolor($width, $height);

imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $img[0], $img[1]);
$file = rtrim($upload_dir, '/').'/'.time().'.jpg';
imagejpeg($dst_im, $file, 75);
imagedestroy($src_im);
imagedestroy($dst_im);
$message = $file;
return true;
}

$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/modules/teams/logotypes/';
if(ulpoad_image('fupload', $upload_dir, 180, $message)){
echo 'Файл загружен: '.$message;
}
else{
echo 'Ошибка: '.$message;
}
?>

Спустя 1 минута, 23 секунды (14.08.2011 - 12:09) cyberside написал(а):
Тоже самое

Спустя 3 минуты, 41 секунда (14.08.2011 - 12:13) cyberside написал(а):
А способ загрузки из URL?

Спустя 8 минут, 50 секунд (14.08.2011 - 12:21) killer8080 написал(а):
Цитата (cyberside @ 14.08.2011 - 12:13)
А способ загрузки из URL?

в смысле?
вот проверил рабочий вариант, только нет защиты от F5
<form action="" method="post" enctype="multipart/form-data">
<
input type="file" name="fupload" /><input type="submit" />
</
form>
<?php

$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/modules/teams/logotypes/';
if(upload_image('fupload', $upload_dir, 180, $message)){
echo 'Файл загружен: '.$message;
}
else{
echo 'Ошибка: '.$message;
}

function upload_image($name, $upload_dir, $dst_max_side, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}

$img = getimagesize($_FILES[$name]['tmp_name']);
if(!$img || strpos($img['mime'], 'image/') !== 0){
$message = 'загруженный файл не является изображением';
return false;
}

$func = 'imagecreatefrom'.substr($img['mime'], strpos($img['mime'], '/') + 1);
if(!function_exists($func)){
$message = 'формат изображения не поддерживается';
return false;
}

$src_im = $func($_FILES[$name]['tmp_name']);

$width = $img[0] >= $img[1] ? $dst_max_side : ($img[0] * $dst_max_side / $img[1]);
$height = $img[1] >= $img[0] ? $dst_max_side : ($img[1] * $dst_max_side / $img[0]);

$dst_im = imagecreatetruecolor($width, $height);

imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $img[0], $img[1]);
$file = rtrim($upload_dir, '/').'/'.time().'.jpg';
imagejpeg($dst_im, $file, 75);
imagedestroy($src_im);
imagedestroy($dst_im);
$message = $file;
return true;
}


?>

Спустя 2 минуты, 54 секунды (14.08.2011 - 12:24) cyberside написал(а):
Ну защита от ф5 у меня в форме есть... Ща проверю...

Спустя 7 минут, 8 секунд (14.08.2011 - 12:32) killer8080 написал(а):
да ещё не мешало бы после imagejpeg, установить права доступа. Файл будет создан од правами апача, обычно 755, тогда по ftp под правами юзера хостинга его нельзя будет удалить.
...
imagejpeg($dst_im, $file, 75);
chmod($file, 0775);
...

Спустя 4 минуты, 13 секунд (14.08.2011 - 12:36) cyberside написал(а):
хм, работает.. А когда вставляю к себе в форму, ошибка возвращается))

Спустя 1 минута, 57 секунд (14.08.2011 - 12:38) killer8080 написал(а):
какая ошибка?

Спустя 35 секунд (14.08.2011 - 12:38) cyberside написал(а):
Fatal error: Call to undefined function upload_image() .... on line 332

Спустя 8 минут, 52 секунды (14.08.2011 - 12:47) killer8080 написал(а):
значит функция не объявлена, ищи ошибку

Спустя 5 минут, 23 секунды (14.08.2011 - 12:53) cyberside написал(а):
Я изменил имя функции, все заработало

Спустя 10 минут, 24 секунды (14.08.2011 - 13:03) killer8080 написал(а):
cyberside
не забудь про права доступа к файлу wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.