Скрипт загрузки фоток

Discussion in 'PHP' started by MafiaBoy3, 21 Jul 2008.

  1. MafiaBoy3

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    Нужен простой, гибкий и удобный скрипт для загрузки фоток на сервер. В моей коллекции его нет, поделитесь если у кого есть. Очень благодарен.
     
  2. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    гы. :) это ты для своей социалки делаешь? есть такая функция в php называеться copy() поищи по ней.
     
  3. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    В архиве находятся 10 популярных скриптов для создания хостинга картинок. Теперь выбрав наиболее понравившийся скрипт, Вы сможете создать собственный сервис по хранению изображений, наподобие foto.radikal, imageshack или других подобных сайтов.

    Список скриптов в архиве (1.42 Mb):

    CoSiS Free Image Host Script
    EasyImageHoster 1.35
    GMPH v1.0.3
    Image Upload
    Image Host Script 0.7
    DXL dev\' Image Hosting Script
    ImgUpload 2.0.1
    UPLOADIMAGE v1.02
    imageshack.us Clone
    eXtreme Photo Hosting 2006

    Скачать тут => http://depositfiles.com/files/2987111
     
    2 people like this.
  4. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    PHP:
    function avup($folder,$fname,$nname,$x,$y

        
    $data $_FILES[$fname]; 
        
    $tmp $data['tmp_name']; 
        
    $file $data['name']; 
         
        if (
    preg_match('#[^\?\"/:\*<>\|]+?\.\w+?#'$file)) 
        { 
            if (@
    file_exists($tmp)) 
            { 
                if ((
    $a strrpos($file'.')) !== false
                { 
                    
    $f strtolower(substr($file$a)); 
                    
    $name $folder.'/'.$nname
                    switch(
    $f)  
                    { 
                        case 
    '.gif'
                            
    $img = @imagecreatefromgif($_FILES[$fname]['tmp_name']); 
                            
    $name .= $f
                            break; 
                        case 
    '.png'
                            
    $img = @imagecreatefrompng($_FILES[$fname]['tmp_name']); 
                            
    $name .= $f
                            break; 
                        case 
    '.jpg': case '.jpeg'
                            
    $img = @imagecreatefromjpeg($_FILES[$fname]['tmp_name']); 
                            
    $name .= $f
                            break; 
                    } 
                } 
                if(
    $img
                { 
                    if(
    imagesx($img) <= $x && imagesy($img) <= $y
                        if(@
    move_uploaded_file($tmp$name)) 
                        return 
    $nname.$f
                } 
            } 
        } 
        return 
    false

    использование

    PHP:
    <?php
    if (isset($_POST['up']))
    {
        
    $chrs chr(mt_rand(97122)) . time();
        if ((
    $xy avup('Foto''file'$chrs200300)))
        {
            
    //Код...
        
    }
    }
    ?>

    <form method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="up"></form>
     
    2 people like this.
  5. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Функция, которую использую для заливки картинок на сервант.
    Сохраняет картинки в формате jpg с качеством 80 единиц.

    PHP:
    function LoadImage($fileinfo$filepath$width null$height null)
    {
        
    $allowed  = array ('gif','png','jpg');
        
    $filename    trim($fileinfo['name'], "\x00..\x1F");
        
    $tmpname    explode('.',$filename);
        
    $extension     $tmpname[count($tmpname)-1];
        
    $allowed     in_array($extension,$allowed);
        

        if (
    $allowed)
        {
            list(
    $rwidth$rheight) = getimagesize($fileinfo['tmp_name']);
            
            if (
    $width == null$width $rwidth;
            if (
    $height == null$height $rheight;
            
            
    $image    imagecreatetruecolor($width$height);
            
    $nimage null;
            
            switch (
    $extension)
            {
                case 
    'gif':
                    
    $nimage    imagecreatefromgif($fileinfo['tmp_name']);
                    break;
                
                case 
    'jpg':
                    
    $nimage    imagecreatefromjpeg($fileinfo['tmp_name']);
                    break;
                
                case 
    'png':
                    
    $nimage    imagecreatefrompng($fileinfo['tmp_name']);
                    break;
                
                default:
                    return 
    false;
                    break;
            }
            
            if (!
    imagejpeg($image$filepath80))
            {
                return 
    false;
            }
            
            return 
    true;
        }
        else
        {
            return 
    false;
        }
    }
    $fileinfo - нужный элемент из массива $_FILES

    $filepath - путь и название файла, в который будем писать картинку

    $width, $height - размеры картинки, до которых нужно сжать/растянуть картинку. Если null - размер не меняем.

    пример использования:
    PHP:
    if (LoadImage($_FILES['photo'], './photos/myphoto.jpg')
    {
        echo 
    'All ok!';
    }
    else
    {
        echo 
    'Error!';
    }
     
  6. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    удалите нафих эту рекламу -^

    Для загрузки лучше использовать класс
    Classes: Graphics -389
    http://phpclasses.segmenta.ru/browse/class/11.html
    Там найдешь массу интересной инфы по работе с картинками, и не только по аплоаду

    Или вот такой вот например
    Применение
    Код нужно немного переделать для аплоада только 1 файла
    PHP:
    foreach($_FILES as $key=>$data)
                    {
                        
    $new explode('.',$data['name']);                
                        
    $fupload=& FileUploader::getInstance();
                        
    $fupload->_FILESKeyName=$key;
                        
    $fupload->newName$NewFileName
                        $fupload
    ->DestinationPath$DestinationPath;
                        
    $fupload->AddAllowedMIME('image/jpeg','image/pjpeg','image/gif','image/png');
                        
    $file $fupload->StartUpload();                
                        unset(
    $_FILES[$key]['name']);
                    }


    Сам класс:
    PHP:
    class FileUploader {
            
            var 
    $_FILESKeyName;
            
            var 
    $newNamefalse;
            
            var 
    $DestinationPath'./';
            
            var 
    $AllowedMIME= array();
            
            var 
    $isUploadedfalse;
            var 
    $ErrorMessage'';
            
            var 
    $UploadErrors = Array(
                
    0=>'There is no error, the file uploaded with success.',
                
    1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
                
    2=>'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
                
    3=>'The uploaded file was only partially uploaded.',
                
    4=>'No file was uploaded.',
                
    6=>'Missing a temporary folder.',
                
    7=>'Failed to write file to disk.',
                
    8=>'File upload stopped by extension.'
            
    );
            
            
            function 
    FileUploader() {
                
            }
            
            function 
    StartUpload() {            
                
    $_file$_FILES[$this->_FILESKeyName];
                if (
    $_file['error']!=0) {
                    
    $this->ErrorMessage$this->UploadErrors[$_file['error']];
                    return;
                }
                else {
                    if ( 
    count($this->AllowedMIME)>&& !in_array($_file['type'], $this->AllowedMIME)) {
                        
    $this->ErrorMessage'Wrong MIME type of uploaded file.';
                        return;
                    }
                    
                    
    // start uploading file
                    
    $this->getNewName($_file['name']);
                    
    move_uploaded_file($_file['tmp_name'], $this->DestinationPath.$this->newName);
                    return 
    $this->newName;
                }
            }
            
            function 
    getNewName($oldname) {
                
    $oldnameexplode('.'$oldname);
                
    $extentionstrtolower($oldname[count($oldname)-1]);
                
    array_splice($oldnamecount($oldname)-11);
                
    $oldnameimplode('.'$oldname);
                
                
    $this->newNamestrtolower($this->newName!==false $this->newName $oldname);
                
                
    $new_namepreg_replace("/[^a-z0-9]+/i"'_'$this->newName);
                
    $this->newName$new_name '.' $extention;

                
    $i1;
                while(
    file_exists($this->DestinationPath.$this->newName)) {
                    
    $this->newName$new_name '_' $i '.' $extention;
                    
    $i++;
                }
            }
            
            function 
    AddAllowedMIME() {
                
    $amountfunc_num_args();
                if (
    $amount>0) {
                    
    $argumentsfunc_get_args();
                    for(
    $i=0$i<$amount$i++)
                        
    array_push($this->AllowedMIME$arguments[$i]);
                }
            }
            
            function 
    ClearAllowedMIME() {
                
    array_splice($this->AllowedMIME0);
            }
            
            function &
    getInstance() {
                static 
    $instance;
                if (!
    $instance$instance= new FileUploader();
                return 
    $instance;
            }
        }
    Класс под php4, т.е не использует преимуществ php5, хотя в данном случае, это и не актуально
    Пользуйся классами - экономь время

    пс А в честь чего, многим новым темам, начали рейтинг - 5 ставить ?
     
    #6 Naydav, 23 Jul 2008
    Last edited: 23 Jul 2008
  7. skivig

    skivig New Member

    Joined:
    31 Jul 2007
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    А есть у когонибудь среализацией imagemagic тоесть там превьюшки через него, водные изображения...?
     
  8. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Я ж уже отвечал:
    Graphics - 387

    Там ты найдешь все - и превьюхи, и вотремарк, и кропы, и зумы, и установка нового размера, фиксированого, не фиксированого, и много чего другого :)