Visualizzazione dei risultati da 1 a 4 su 4

Discussione: upload di immagini

  1. #1

    upload di immagini

    Salve sto scrivendo uno script per l'upload di immagini che una volta caricate sul server esse devono essere ridimensionate e poi cancellate.. mantenendo xo le miniature.

    Questo è il codice

    Codice PHP:
    <?php

    ini_set
    ("display_errors""1");

    global 
    $dir$conn$prefix;

    // Includo le funzioni utili per le news
    require_once($dir['libs'] . 'news.functions.inc');


        function 
    formIco($ok NULL) {
            echo 
    '
                <div id="wrap">
                    <ul class="menu">
                        [*][url="#"]Carica Img[/url]
                            <ul>
                                [*]
                                    <form name="form1" method="post" action="' 
    $_SERVER['PHP_SELF'] . '?' $_SERVER['QUERY_STRING'] . '" enctype="multipart/form-data">
                                        <input type="file" name="imagefile">
                                        ' 
    $ok '
                                        <input type="submit" name="Submit" value="Carica">
                                    </form>
                                
                            [/list]
                        
                    [/list]
                </div>
            '
    ;
        }
        

    // Funzione d'elaborazione del form
        // Verifico se sono stati inviati i dati dal form se no mostro il form cosi da essere completato
        
    if(!isset($_POST['imagefile'])){
            
            
    formIco();

        } else {

            
    // Destinazione nella quale devono essere spostati i file appena caricati
            
    $destinazione $dir['sources'] . "icone/";
            
            
    // Rilevo l'estensione dell'immagine
            
    switch ($_FILES['imagefile']['type']) {
                
                case 
    "image/gif":
                
    copy ($_FILES['imagefile']['tmp_name'], $destinazione $_FILES['imagefile']['name'])
                  or die (
    "Impossibile caricare il file sul server");
                
                
    // Preparo la query per caricare il link all'immagine sul server
                
    $insertImg "INSERT INTO " $prefix "icone (percorso) VALUES ('" $destinazione $_FILES['imagefile']['name'] . "')";  
                break;
                
                case 
    "image/jpeg":
                
    copy ($_FILES['imagefile']['tmp_name'], $destinazione $_FILES['imagefile']['name'])
                  or die (
    "Impossibile caricare il file sul server");
                
                
    // Preparo la query per caricare il link all'immagine sul server
                
    $insertImg "INSERT INTO " $prefix "icone (percorso) VALUES ('" $destinazione $_FILES['imagefile']['name'] . "')";  
                break;
                
                case 
    "image/png":
                
    copy ($_FILES['imagefile']['tmp_name'], $destinazione $_FILES['imagefile']['name'])
                  or die (
    "Impossibile caricare il file sul server");
                
                
    // Preparo la query per caricare il link all'immagine sul server
                
    $insertImg "INSERT INTO " $prefix "icone (percorso) VALUES ('" $destinazione $_FILES['imagefile']['name'] . "')";  
                break;
                
                default:
                
    $errore "Il tipi di file accettati sono: 
    JPG, JPEG, GIF e PNG."
    ;
                
    formIco($errore);
                
    $insertImg "";
                break;
                
            }
            
            
            
    // Eseguo la verifica x stabilire se l'immagine non è già presente nel database
            
    $ext explode("."basename($_FILES['imagefile']['name']));
            
            
    $query "SELECT * FROM " $prefix "icone WHERE sezione = '" $destinazione $ext[0] . "_ico" $ext[1] . "'";
            
            
    $result_verify mysql_query($query) or die ("Errore durante la query di verifica!");
            
    $count mysql_num_rows($result_verify);
            
            
    // Eseguo la query se non è vuota o se l'img non è già nel database
            
    if ($count != FALSE) {
                
                
    formIco("Immagine gi&agrave; presente nel database!");
                exit();
                
            } else if (
    $insertImg != "") {
                
    $result $conn->query($insertImg);
                if(
    $result !== TRUE) {
                    
                    
    $errore 'Errore durante l\'inserimento.';
                    
    formIco($errore);
                    exit();
                    
                }
            }
            
            
            
    // Ricavo il percorso dell'ultimo file inserito
            
    $percorso "SELECT percorso FROM " $prefix "icone WHERE percorso = '" $destinazione $_FILES['imagefile']['name'] . "' LIMIT 1";
            
    // Lo invio alla funzione che crea la miniatura e poi elimina il file inserendo nel db il link alla miniatura
            
    thumb($percorso15170);
            
            
            
            
    // Stampo nel form l'indicaione dell'avvenuto upload dell'immagine
              
    $ok  "
    <span style=\"text-transform: uppercase\">" 
    $_FILES['imagefile']['type'] . "</span> caricata!";
            
    $ok .= "
    Nome: [b]" 
    $_FILES['imagefile']['name'] . "[/b]";
            
    formIco($ok);
        
        }


    ?>
    Questo è il file dove c'è il form e l'eleaborazione di esso.. di seguito posto la funzione x la thumbail

    Codice PHP:
    // Creazione delle miniature o thumbails
    function thumb($source_file$size$quality) {
        
        global 
    $prefix;


        
    // Creo la destinazione della miniatura 
        
    $ext explode("."basename($source_file));
        
    $output_file dirname($source_file).'/'.$ext[0].'_ico.'.$ext[1];
        
        
    $success false;
        list(
    $width$height) = getimagesize($source_file);
        
        
    $new_width intval(($width $size) / max($width$height));
        
    $new_height intval(($height $size) / max($width$height));
        
        
        
    // Rilevo l'estensione dell'immagine
        
    switch ($ext[1]) {
            
              
    // faccio lo switch a seconda dell'estensione
            
    case "gif":
                if ( 
    $image_in imagecreatefromgif($source_file) );
            break;

            case 
    "png":
                if ( 
    $image_in imagecreatefrompng($source_file) ); 
            break;

            default: 
                if ( 
    $image_in imagecreatefromjpeg($source_file) );

        }
                {
                    if ( 
    $image_out imagecreatetruecolor($new_width$new_height) ) {
            
                        
    imagecopyresampled($image_out$image_in0000$new_width$new_height$width$height);
        
                        switch (
    $ext[1]) {
        
                            
    // faccio lo switch a seconda dell'estensione
                            
    case "gif":
                                if ( 
    imagegif($image_out$output_file$quality) );
                               break;
        
                              case 
    "png":
                                  if ( 
    imagepng($image_out$output_file$quality) ); 
                              break;
        
                              default: 
                                  if ( 
    imagejpeg($image_out$output_file$quality) );
        
                        }
        
                                {
                                    
    $output_file str_replace("\\""/"$output_file);
                                    
    $sql_thumb "UPDATE {$prefix}icone SET percorso = '$output_file' WHERE percorso = '$source_file'";
                                    
    $result mysql_query($sql_thumb) or die(mysql_error());
                                    
    $success true;
                                }
        
                                
    imagedestroy($image_out);
        
                    }
        
                    
    imagedestroy($image_in);
                    
                    
    // Elimino l'immagine dopo la creazione della miniatura
                    
    if (unlink($source_file) != TRUE) {
                        
                        echo 
    "Errore nell'eliminazione dell'immagine sorgente";    
                        
                    }
                    
                    
        
                }
        
        return 
    $success;
        

    Il codice non riporta errori.. cioè carico l'immagine nel form.. ricarica la pagina ma non succede nulla.. non viene nemmeno caricata sul server l'immagine e nemmeno il link nel db viene inserito.. cosa sbaglio?
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  2. #2
    Inserisci all'inizio del tuo script il seguente codice:

    Codice PHP:
    error_reporting(E_ALL);
    ini_set('display_errors'1); 
    poi prova a ricominciare leggendo il manuale ufficiale:

    http://www.php.net/manual/en/features.file-upload.php

  3. #3
    ho aggiunto e confrontato quanto ho scritto con quanto dice il manuale e non vedo differenze.. nn funziona comunque..

    ho sostituito copy con move_uploaded_file ma niente
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  4. #4
    scusate ma cosi $_FILES['imagefile']['name'] viene inserito anche l'estensione? cioè associato a name c'è anche l'estesione del file app caricato (nome.ext) oppure devo triarlo fuori con un explode ed aggiungercelo alla fine?

    xke se è cosi prob è un errore che impedisce il corretto funzionamento dell'applicazione
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.