Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Gd

  1. #1

    Gd

    Salve forum,
    da qualche tempo sto provando a creare thumbnails con php, chiaramente senza successo...

    Ecco lo script che dovrebbe creare una thumb e inserire l'immagine a grandezza originale nella cartella /immagini/cartellaEsempio/ (le thumbs vanno invece in /immagini/cartellaEsempio/thumbs/):

    Codice PHP:
     ini_set("memory_limit""50M"); 
        
    $dir base64_decode($_GET['dir']);
        
    $thumb;
        
    $tmp $_FILES['file1']['tmp_name'];
        echo 
    $FILES['file1']['size'];

        if (
    $_FILES['file1']['size'] > 3145728)    {            // la bellezza di 3 mb
            
    echo '<p class = "centro">Il file eccede la dimensione massima di 3 MB[/b]

    [/b]

    [/b]

    </p>'
    ;
        }

        elseif (
    $_FILES['file1']['size'] == 0) {
            echo 
    '<p class = "centro">Nessun file sembra apparentemente caricato, controlla che il suo nome non contenga spazi o caratteri di sottolineatura (_)[/b]

    [/b]

    [/b]

    </p>'
    ;
        }

                
    /* Da qua iniziano le procedure di salvataggio e elaborazione dell'immagine  */

            
    if (file_exists("immagini/"$dir ."/" $_FILES['file1']['name'])) {                   // Es.: immagini/fotoGruppi/img1.png
                    
    echo '<p class = "centro">Esiste gi&aacute; un file con questo nome








    </p>'
    ;
                    exit(
    1);
            }
                                             
            if (!
    move_uploaded_file($tmp"immagini/" $dir "/" $_FILES['file1']['name'])) {
            echo 
    '<p class = "centro">Errore interno: impossibile caricare il file








    </p>'
    ;
            }


        else {
            switch (
    $_FILES['file1']['type']) {

                
    // Controllo il tipo dell'immagine...

                
    case "image/x-windows-bmp":
                case 
    "image/bmp":
                    
    $thumb imagecreatefromwbmp($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);                       // La vera thumbnail
                    
    imagecopyresampled($thumb_2$thumb00001209012090);
                    
    imagewbmp($thumb_2"/immagini/" $dir "/thumbs/" $_FILES['file1']['name']);
                    break;
                
                case 
    "image/jpeg":
                case 
    "image/pjpeg":
                    
    $thumb imagecreatefromjpeg($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                                
    imagecopyresampled($thumb_2$thumb00001209012090);
                    
    imagejpeg($thumb_2"/immagini/" $dir "/thumbs/" $_FILES['file1']['name']);
                    break;

                case 
    "image/png":
                case 
    "image/x-png":
                    
    $thumb imagecreatefrompng($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                    
    imagecopyresampled($thumb_2$thumb00001209012090);
                    
    imagepng($thumb_2"/immagini/" $dir "/thumbs/" $_FILES['file1']['name']);
                    break;

                case 
    "image/gif":
                    
    $thumb imagecreatefromgif($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                        
    imagecopyresampled($thumb_2$thumb00001209012090);
                    
    imagegif($thumb_2"/immagini/" $dir "/thumbs/" $_FILES['file1']['name']);
                    break;

                default:
                    echo 
    '<p class = "centro">Il formato del file non &egrave; consentito, formati consentiti: *.bmp, *.jpeg, *.jpg, *.png, *.gif 








    '
    ;
                    exit(
    1);            // Lascio morire l'applicazione in caso di errore
            
    }

            
    imagedestroy($thumb);      
        } 
    ecco invece il form che invia l'immagine:

    <div id = "form">


    Attenzione: il nome del file non deve contenere n&eacute; caratteri di sottolineatura (_) n&eacute; spazi!
    </p>
    <form ENCTYPE="multipart/form-data" action="upload.php?dir=Zm90b0V2ZW50aQ==" method="POST"><input type="file" name="file1"><input type="submit" value="Carica Foto">
    </form>

    ed ecco gli errori che ricevo:

    Warning: imagecreatefromjpeg(/tmp/phpGFzQuK) [function.imagecreatefromjpeg]: failed to open stream: Nessun file o directory in /home/xxx/Server/prova/upload.php on line 71

    Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/xxx/Server/prova/upload.php on line 73

    Warning: imagejpeg() [function.imagejpeg]: Unable to open '/immagini/fotoEventi/thumbs/00660_splash_1280x800.jpg' for writing: Nessun file o directory in /home/xxx/Server/prova/upload.php on line 74

    Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/xxx/Server/prova/upload.php on line 97

    Dove diavolo è l'errore?
    Perché devo settare un limite di memoria di 50MB per lo script caricando un'immagine da 1.6 MB?

    Vi sarò eternamente grato...
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Il problema è che sposti il file tramite move_uploaded_file() ma poi cerchi di accederlo sotto il vecchio percorso.

    Un workaround veloce sarebbe mettere
    Codice PHP:
    $tmp=$dir "/" $_FILES['file1']['name']); 
    prima del switch

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Ciao neroux,
    avevi perfettamente ragione! Tramite qualche piccola modifica allo script sono riuscito ad ottenere il risultato tanto agognato.

    Ecco ora come appare il codice php della pagina di upload:

    Codice PHP:
        ini_set("memory_limit""50M"); 
        
    $dir base64_decode($_GET['dir']);
        
    $thumb;
        
    $tmp $_FILES['file1']['tmp_name'];
        echo 
    $FILES['file1']['size'];

        if (
    $_FILES['file1']['size'] > 3145728)    {            // la bellezza di 3 mb
            
    echo '<p class = "centro">Il file eccede la dimensione massima di 3 MB[/b]

    [/b]

    [/b]

    </p>'
    ;
        }

        elseif (
    $_FILES['file1']['size'] == 0) {
            echo 
    '<p class = "centro">Nessun file sembra apparentemente caricato, controlla che il suo nome non contenga spazi o caratteri di sottolineatura (_)[/b]

    [/b]

    [/b]

    </p>'
    ;
        }

                
    /* Da qua iniziano le procedure di salvataggio e elaborazione dell'immagine  */

            
    if (file_exists("immagini/"$dir ."/" $_FILES['file1']['name'])) {                   // Es.: immagini/fotoGruppi/img1.png
                    
    echo '<p class = "centro">Esiste gi&aacute; un file con questo nome








    </p>'
    ;
                    exit(
    1);
            }
                                             
            if (!
    move_uploaded_file($tmp"immagini/" $dir "/" $_FILES['file1']['name'])) {
            echo 
    '<p class = "centro">Errore interno: impossibile caricare il file








    </p>'
    ;
        }

        else {

            
    $tmp "immagini/"$dir ."/" $_FILES['file1']['name'];
            list(
    $lar$lun) = getimagesize($tmp);

            switch (
    $_FILES['file1']['type']) {

                
    // Controllo il tipo dell'immagine...

                
    case "image/x-windows-bmp":
                case 
    "image/bmp":
                    
    $thumb imagecreatefromwbmp($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);                       // La vera thumbnail
                    
    imagecopyresampled($thumb_2$thumb000012090$lar$lun);
                    
    imagewbmp($thumb_2,"immagini/" $dir "/thumbs/_php_thumb_" $_FILES['file1']['name']);
                    break;
                
                case 
    "image/jpeg":
                case 
    "image/pjpeg":
                    
    $thumb imagecreatefromjpeg($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                                
    imagecopyresampled($thumb_2$thumb000012090$lar$lun);
                    
    imagejpeg($thumb_2,"immagini/" $dir "/thumbs/_php_thumb_" $_FILES['file1']['name']);        
                    break;

                case 
    "image/png":
                case 
    "image/x-png":
                    
    $thumb imagecreatefrompng($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                    
    imagecopyresampled($thumb_2$thumb000012090$lar$lun);
                    
    imagepng($thumb_2,"immagini/" $dir "/thumbs/_php_thumb_" $_FILES['file1']['name']);
                    break;

                case 
    "image/gif":
                    
    $thumb imagecreatefromgif($tmp);
                    
    $thumb_2 imagecreatetruecolor(12090);
                        
    imagecopyresampled($thumb_2$thumb000012090$lar$lun);
                    
    imagegif($thumb_2,"immagini/" $dir "/thumbs/_php_thumb_" $_FILES['file1']['name']);
                    break;

                default:
                    echo 
    '<p class = "centro">Il formato del file non &egrave; consentito, formati consentiti: *.bmp, *.jpeg, *.jpg, *.png, *.gif 








    '
    ;
                    exit(
    1);            // Lascio morire l'applicazione in caso di errore
            
    }

            echo 
    '<p class = "centro">L\'immagine &egrave; stata aggiunta correttamente








    </p>'
    ;

            
    imagedestroy($thumb);            // Libero preziosissimo spazio nella memoria...
            
    imagedestroy($thumb_2);
        } 
    Ora è però sorto un'altro problema... e ti pareva!
    Quando carico un'immagine pesante oltre 2 MB il mio script stampa l'errore "Nessun file sembra apparentemente caricato", come se il peso del file fosse 0.
    Qual'è il motivo di tale errore?

    Mille grazie!

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da kazuya 106
    Ora è però sorto un'altro problema... e ti pareva!
    Quando carico un'immagine pesante oltre 2 MB il mio script stampa l'errore "Nessun file sembra apparentemente caricato", come se il peso del file fosse 0.
    Qual'è il motivo di tale errore?

    Mille grazie!
    http://www.php.net/manual/en/feature...n-pitfalls.php


    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Non so più come ringraziarti!
    Ho risolto tutto con file .htaccess come questo:
    Codice PHP:
    php_value upload_max_filesize 10M
    php_value max_execution_time 800 
    Grazie, grazie e ancora grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.