Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2008, 15:12   #1
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
Вопрос Закачка картинок через форму

Нужно сделать панель управления фотоальбомом на сайте. Картинки закачиваю через форму input type=file. Форма отправляет на скрипт который делает copy($_FILES["filename"]["tmp_name"],"pic/pic_01.jpg")... ну и тра-та-та в том же духе. Картинки закачиваются, но при просмотре вместо привычного изображения видим... красный крестик
Что делать? Права пробовал устанавливать - не помогает. Попробовал ради интереса через веб-интерфейс хостинга закачать картинку. Та же фигня! Написал в службу поддержки. Жду ответа от них. Но может здесь кто-нибудь подскажет?
Romanbl4 вне форума Ответить с цитированием
Старый 02.02.2008, 15:51   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Сначала вам надо применить функции для работы с закачкой, ну и тра-та-та в том же духе.
SkyM@n вне форума Ответить с цитированием
Старый 02.02.2008, 16:03   #3
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

Раз "тра-та-та" не катит. Спросим по-другому
Подскажите, что не так?
PHP код:
<?
if (!isset($_POST['pic_change']))
{
?>
  <form name="manage_photos" action="" method="POST" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
  <input type="file" name="filename" />
  <input type="submit" name="pic_change" value="Следующий шаг >>" />
  </form>
<?
}
else
{
  if (
copy($_FILES["filename"]["tmp_name"],"pic/prepare/pic.jpg"))
  {
    echo 
"<br />Закачка прошла успешно";
  }
  else
  {
    echo 
"<br />Ошибка загрузки.";
  }
}
?>

Последний раз редактировалось Romanbl4; 02.02.2008 в 16:11.
Romanbl4 вне форума Ответить с цитированием
Старый 02.02.2008, 16:16   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Во, это другое дело
Содержимое $_FILES["filename"]["tmp_name"] - проверяли? Что выводит?
SkyM@n вне форума Ответить с цитированием
Старый 02.02.2008, 16:24   #5
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

echo ($_FILES["filename"]["tmp_name"]) выводит "/tmp\php7.tmp"
echo ($_FILES["filename"]["name"]) выводит имя нужного файла

Но дело то в том, что даже скрипт WebFTP Хостинг Центра с закачкой не справился. Там тоже картинка криво закачивается. (Если это считается рекламой - уберу)
Romanbl4 вне форума Ответить с цитированием
Старый 02.02.2008, 16:26   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Я, конечно, дико извиняюсь за длинный листинг, но вот это вполне успешно работает:

PHP код:
        if(!$_FILES["thumbnail_file"]["error"]){
            
$thumb_data LoadImage($_FILES["thumbnail_file"]["tmp_name"]);
            if(
$thumb_data){
                
$thumbnail_file_mime     $thumb_data['mime'];
                
$thumbnail_width    $thumb_data['width'];
                
$thumbnail_height    $thumb_data['height'];
                    
                if(
$thumbnail_width != THUMBNAIL_WIDTH || $thumbnail_height != THUMBNAIL_HEIGHT){
                    break;    
// fatal error
                
}
                
$thumbnail_file_size     $thumb_data['filesize'];
                
$thumbnail_file_data    $thumb_data['imagefile'];
                
                unset(
$thumb_data);
            }
            else {
                break;
            }
        }
        else {
            break;
        }
             
        if(!
$_FILES["photo_file"]["error"]){
            
$fname $_FILES["photo_file"]["tmp_name"];
            
            if(
$photo_imgdata LoadImage($_FILES["photo_file"]["tmp_name"])){
                
$tmp_file CreateTmpFile();
                
$tmp_img imagecreatetruecolor(14090);
                
                
imagecopyresampled($tmp_img$photo_imgdata['imageresource'], 0,0,0,0,14090
                    
$photo_imgdata['width'], $photo_imgdata['height']);
                
                
imagejpeg($tmp_img$tmp_file80);
                if(
$photo_preview_data LoadImage($tmp_file)){

                    
$photo_file_mime     $photo_imgdata['mime'];
                    
$photo_file_width    $photo_imgdata['width'];
                    
$photo_file_height    $photo_imgdata['height'];
                    
$photo_file_data    $photo_imgdata['imagefile'];
                    
$photo_file_size     $photo_imgdata['filesize'];
                    
                    
$photo_preview_file_data    $photo_preview_data['imagefile'];
                    
$photo_preview_file_mime    $photo_preview_data['mime'];
                    
$photo_preview_file_size    $photo_preview_data['filesize'];
                    
$photo_preview_file_width    $photo_preview_data['width'];
                    
$photo_preview_file_height    $photo_preview_data['height'];
                    
                    
imagedestroy($tmp_img);
                    unset(
$photo_preview_data);
                }
                else {
                    
$error_code |= PS_BAD_PHOTO_FILE;
                }
            }
            else {
                
$error_code |= PS_BAD_PHOTO_FILE;
            }
        }
        else {
            
$error_code |= PS_NO_PHOTO;
        } 
Вложения
Тип файла: txt addphoto.php.txt (12.4 Кб, 138 просмотров)
B_N вне форума Ответить с цитированием
Старый 02.02.2008, 16:29   #7
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

Заранее спасибо. Попробую, отпишусь
Romanbl4 вне форума Ответить с цитированием
Старый 02.02.2008, 16:34   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Вот еще, если с функциями заминка выйдет

PHP код:
function LoadImage($filename){
    if((
$imginfo = @getimagesize($filename)) == false) return false;

    
$pic_info = Array();
    
$pic_info["width"]      = $imginfo[0];
    
$pic_info["height"]     = $imginfo[1];
    
$pic_info["imgtype"]    = $imginfo[2];
    
$pic_info["html_wxh"]   = $imginfo[3];
    switch(
$imginfo[2]){
        case 
IMAGETYPE_GIF      $im imagecreatefromgif($filename); break;
        case 
IMAGETYPE_JPEG      $im imagecreatefromjpeg($filename); break;
        case 
IMAGETYPE_PNG      $im imagecreatefrompng($filename); break;
        case 
IMAGETYPE_BMP        $im imagecreatefromwbmp($filename); break;
        case 
IMAGETYPE_WBMP        $im imagecreatefromwbmp($filename); break;
        case 
IMAGETYPE_XBM        $im imagecreatefromxbm($filename); break;
        default : return 
false;
    };
    
$pic_info["imageresource"] = $im;

    
$fd fopen ($filename"rb");
    
$imagefile fread ($fdfilesize ($filename));
    
fclose ($fd);

    
$pic_info["mime"] = image_type_to_mime_type($imginfo[2]);
    
$pic_info["filesize"] = filesize ($filename);
    
$pic_info["filename"] = $filename;
    
$pic_info["text"] = "";
    
$pic_info["tag"] = 0;
    
$pic_info["status"] = 0;
    
$pic_info["imagefile"] = $imagefile;

    return 
$pic_info;
};

function 
CreateTmpFile()
{
    global 
$GLOBAL_TMP_FILES;

    
$GLOBAL_TMP_FILES[] = realpath($tmp tempnam('./../../tmp/','_tmp'));
    return 
$tmp;
}

function 
DeleteTmpFilesCallback()
{
    global 
$GLOBAL_TMP_FILES;
    foreach(
$GLOBAL_TMP_FILES as $fnameunlink($fname);    

B_N вне форума Ответить с цитированием
Старый 02.02.2008, 17:53   #9
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

попробовал... что-то не показываются у меня изображения. Причем копирую их руками с хостинга обратно на свой комп - они нормальные и в прогах для просмотра изображений адекватно отображаются. А вот с хостинга даже по ссылке типа mysite.ru/pic.jpg видно только крестик.
Может я их сохраняю неправильно...
PHP код:
if (isset($_FILES["filename"]["tmp_name"]))
{
  
$newimg LoadImage($_FILES["filename"]["tmp_name"]);
  
$imgf fopen("pic/prepare/pic.jpg","w");
  
fwrite($imgf,$newimg["imagefile"]);
  
fclose($imgf);

Romanbl4 вне форума Ответить с цитированием
Старый 02.02.2008, 17:55   #10
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

а покажите-ка свой .htaccess
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт приема фотографий на печать через форму на сайте Hellog PHP 8 29.01.2009 16:25
Скрипт приема фотографий на печать через форму на сайте Hellog Фриланс 2 05.06.2008 15:37
закачка по ftp Lonix Работа с сетью в Delphi 1 06.11.2007 21:34
Как изменить стандартную форму на форму любой сложности QwErEn Общие вопросы Delphi 9 08.06.2007 11:44