PHP - загрузка изображения в папку

Discussion in 'PHP' started by Lionis, 20 Dec 2008.

  1. Lionis

    Lionis Member

    Joined:
    13 Dec 2008
    Messages:
    94
    Likes Received:
    7
    Reputations:
    0
    Есть папка - "images" /
    админка управляющая одним файлом "001.jpg"
    надо код вида >>>

    [​IMG]

    ---
    Обзор - выбор файла на компьютере .
    Ниже - картинка которая сейчас загружена в папку .
    картинка все время будет одного названия и формата "001.jpg" .
    Загрузить - подтверждение , после чего страница обновляется и вместо старого изображения отображается загруженное , это я про "файл который сейчас в папке"
    ---
    спасибо .
    буду рад каждому ответу .
    И всех с наступающим!!!
     
  2. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    PHP:
    <form enctype="multipart/form-data" action="?" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="999999">
    <input type="file" name="fajl" />
    <input type="submit" />
    </form>
    Файл, который сейчас в папке:<br />
    <img src="./images/001.jpg" />
    <?php
    if (count($_FILES)>0){
        @
    move_uploaded_file($_FILES['fajl']['tmp_name'],getcwd()."/images/001.jpg");
    }
    ?>
    ?
     
    4 people like this.
  3. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    а лучше так чтобы не кешировалась картинка
    PHP:
    <form enctype="multipart/form-data" action="?" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="999999">
    <input type="file" name="fajl" />
    <input type="submit" />
    </form>
    <img src="./images/001.jpg?<?php echo rand(0,10000); ?>" />
    <?php
    if (count($_FILES)>0){
        @
    move_uploaded_file($_FILES['fajl']['tmp_name'],getcwd()."/images/001.jpg");
    }
    ?>
     
  4. Lionis

    Lionis Member

    Joined:
    13 Dec 2008
    Messages:
    94
    Likes Received:
    7
    Reputations:
    0
    Спасибо большое !
    Все идеально работает!
     
  5. Thrasher88

    Thrasher88 Elder - Старейшина

    Joined:
    18 Apr 2008
    Messages:
    62
    Likes Received:
    13
    Reputations:
    0
    Не буду создавать новую тему, просто здесь опишу свою проблему.
    Есть такой вот код, который должен заливать аватар юзера в папку... но почему то этого не делает. Подскажите, где может быть ошибка?
    PHP:
    if (!$_FILES[newavatar][name]) { 
      echo
    'Не пойму не работает! :(';
        } else {

            
    $filesize_2 $_FILES[newavatar][size];
            if (
    $filesize_2 $max_upload_size) {

            echo 
    "<span class=\"error\">Warning: Max file size exceeded on image #2. Max upload size: "$max_upload_size 1024 ." kb</span><br>";
                
            } else {

                
    $ext_2 strrchr($_FILES[newavatar][name],'.');
                if (
    $ext_2 == ".gif" || $ext_2 == ".jpeg" || $ext_2 == ".png" || $ext_2 == ".jpg") {

                    
    $filenamea str_replace("?"""$_FILES[newavatar][name]);
                    
    $filenameb str_replace(":"""$filenamea);
                    
    $filenamec str_replace(" """$filenameb);

                    
    $add "images/avatars/$time"_" "$username"$filenamec";
                    
    copy($_FILES[newavatar][tmp_name], $add);
                    
    chmod("$add",0777);

                    
    // Delete old avatar
                    
    $old_avatar mysql_query("SELECT * FROM ccms_user where username='$username'");
                    while (
    $row mysql_fetch_assoc($old_avatar)) {

                        if (
    file_exists($row[avatar])) {
                            
    unlink($row[avatar]);
                        }
                    }

                    
    mysql_query("UPDATE ccms_user SET avatar='$add' WHERE username='$username'"); 

                } else {
                    echo 
    "<SPAN class=\"error\">Warning: Avatar - Only .gif, .jpg and .png files may be uploaded.</SPAN><br />";
                }
            }
        }
    Причем все данные в БД скрипт записывает нормально, то есть адрес картинки выводится какой надо и где надо, но самой картинки в папке нету.. Картинка соответствует требованиям по размеру и расширению и, соответственно, папка, в которую заливаются аватарки, имеет соответствующие права.
     
    3 people like this.
  6. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Вместо
    PHP:
    copy($_FILES[newavatar][tmp_name], $add);
    сделай
    PHP:
    move_uploaded_file($_FILES['newavatar']['tmp_name'],$add);
     
  7. Thrasher88

    Thrasher88 Elder - Старейшина

    Joined:
    18 Apr 2008
    Messages:
    62
    Likes Received:
    13
    Reputations:
    0
    Странно как то... файл загружается только тогда, когда нажмешь определенную ссылку. К примеру, загрузил я аватар, в папке авы нету и в том месте, где она должна отображаться не отображантся. Попробовал нажать на ссылку "редактировать профиль"- аватар появился.. а если нажать на ссылку "На главную" аватар так и не появляется.. :/

    Пробовал запретить кеширование - все равно ничего не выходит ((
     
    #7 Thrasher88, 20 Dec 2008
    Last edited: 20 Dec 2008
  8. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    попробуй выводить каринку как я например:
    <img src="./images/001.jpg?<?php echo rand(0,10000); ?>" />
     
  9. Thrasher88

    Thrasher88 Elder - Старейшина

    Joined:
    18 Apr 2008
    Messages:
    62
    Likes Received:
    13
    Reputations:
    0
    А зачем вот это:
    <?php echo rand(0,10000); ?> :/

    UPD: чтоб картинка не кешировалась ))
    UPD: нет, не помогает :(
     
    #9 Thrasher88, 20 Dec 2008
    Last edited: 20 Dec 2008