Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Problema con istruzione copy

    ciao,

    ho un sistema di upload di foto che deve eseguire una serie di operazioni per caricare le foto. Si tratta di un sistema già collaudato ma non so se si tratta di problemi di permessi a livello server. Il codice che uso è il seguente

    Codice PHP:
        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="submit" name="Submit" value="Submit">

    <?php
        
    if(isset($_POST['Submit'])) {
        
    //        Creo una array con i formati accettati
            
    $tipi_consentiti = array("image/gif","image/jpeg","image/jpg","image/pjpeg","image/png");
        
    //        Devo ciclare sui vari file e fargli fare il processo
            
    for($i=0;$i<count ($_FILES['file']['name']);$i++) {
            
                if(@
    $_FILES['file']['name'][$i] != "") {
    //                verifico che il formato del file sia tra quelli accettati
                    
    if (in_array($_FILES['file']['type'][$i], $tipi_consentiti)){ 
                        
    $path_tmp="../tmp";
                        echo 
    "path temp: $path_tmp 
    "
    ;
                        if(!
    copy ($_FILES['file']['tmp_name'][$i], $path_tmp $_FILES['file']['name'][$i])) {
                            echo 
    "copia di file non riuscita 
    !!"
    ;
                        }
    ho delle input in cui selezionare le immagini da caricare e poi uso il nome file temporano per salvarlo in cartella tmp che sta a livello principale..purtroppo già a livello del copy non avviene la copia ma non ricevo neanche il messaggio di errore.
    quanto a permessi di cartella ho permessi di tipo 777 quindi massima libertà ma la copia non avviene.
    qualcuno mi può dare una mano a capire il problema?
    grazie ciao.
    PeppePegasus

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    guarda move_uploaded_file ...

  3. #3
    ciao,

    con il comando suggerito il sistema funziona. L'immagine viene salvata nella dir temporanea.
    Il problema ora è il salvataggio dell'immagine ridimensionata. Per fare questo uso il ridimensionatore smartclass in questo modo:

    Codice PHP:
    $directori="tmp";
    $path_img "images";

    $nomedelfile=$_FILES['file']['name'][$i];

    $immagine_da_mostrare=$nomedelfile;
                    
    include 
    "../include/SmartImage.class.php";
                        
    //Settings
    $src $immagine_da_mostrare;
    $destination $path_img;
    echo 
    "destinazioneee: $destination 
    "
    ;
                        
    //Start!
    $img = new SmartImage($src);
    $img->resize(600400);
    $destinazione=$destination.'/'.$nomedelfile;
    echo 
    "destinazione2222: $destinazione 
    "
    ;

    $img->saveImage($destinazione60);
    $img->close();
    //FINE 
    le dir tmp e images sono allo stesso livello di dove sono i file. Il sistema non mi funziona..i percorsi mi sembrano giusti...
    spero qualcuno mi possa aiutare.
    grazie.
    PeppePegasus

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    - attiva TUTTI i messaggi di errore (anche i warning)
    - verifica il controllo d'errore della classe che usi... ha un metodo per recepire l'ultimo errore? come si verifica la riuscita dell'azione? genera eccezioni?

  5. #5
    ciao,

    lo smart calss non genera errori...però forse sono venuto a capo: esso richiede
    PHP >=4.0.1 or PHP >=5
    GD libraries 1 or GD2
    e forse su altervista.org le gd non ci sono e quindi non funziona.
    qualcuno conosce un ridimensionatore che non usa le gd?
    grazie.
    PeppePegasus

  6. #6
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Su av ci sono le gd quindi è da escludere questo problema.

    Codice PHP:
    $nomedelfile=$_FILES['file']['name'][$i]; 
    La variabile $i dove la prendi? Questo codice sta all'interno di un ciclo di for? Perchè altrimenti vorrebbe dire che non hai attiva la visualizzazione degli errori... nel qual caso o l'attivi o spariamo a caso fin quando non risolviamo il problema
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  7. #7
    ciao,

    ho usato una classe che ho trovato per il ridimensionamento immagini che non usa le librerie GD e funziona. Quindi è da capire se è un problema nel mio codice (che peraltro è già testato su server aruba e va bene) o altro..
    posto il codice di tutto il file:

    Codice PHP:
    <?
    include 'config_ph.php'//inclusioni OK
    require 'function.php';

    ?>

    <form method="post" action="<?php echo $_SERVER['../../PHP_SELF']; ?>" enctype="multipart/form-data">


    Carica le foto con le seguenti caselle: una foto per ogni casella!</p>
    </div>





        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="file" name="file[]">

        <input type="submit" name="Submit" value="Submit">
    </p>    
        



    <?php
        
    if(isset($_POST['Submit'])) {
    //    Creo una array con i formati accettati
            
    $tipi_consentiti = array("image/gif","image/jpeg","image/jpg","image/pjpeg","image/png");
        
    //            Devo ciclare sui vari file e fargli fare il processo
            
    for($i=0;$i<count ($_FILES['file']['name']);$i++) {
            
                if(@
    $_FILES['file']['name'][$i] != "") {
    //            verifico che il formato del file sia tra quelli accettati
                    
    if (in_array($_FILES['file']['type'][$i], $tipi_consentiti)){

                        
    $path_tmp="tmp";
                        if (
    $error == UPLOAD_ERR_OK) {
                            
    $tmp_name $_FILES['file']['tmp_name'][$i];
                            
    $name $_FILES["file"]["name"][$i];
                            
    move_uploaded_file($tmp_name"$path_tmp/$name"); // è OK!!!!!!
                        
    }
    //Fin QUI OK                    
    //                    recupero i dati dal form

                        
    $nome = @addslashes($_FILES['file']['name'][$i]);
                        
    $path $path_img stripslashes($nome);
                        
    $tipo = @addslashes($_FILES['file']['type'][$i]);
                
    // *************************************************
    // Sto usando il ridimensionatore smart class per ridimensionare l'immagine originale
    // dopo salvo in via definitiva l'immagine ridimensionata e cancello quella temporanea
    // *************************************************
                
                        
    $directori="tmp";
                        
    $nomedelfile=$_FILES['file']['name'][$i];
                        echo 
    "nome file: $nomedelfile 
    "
    ;
                        echo 
    "dir * nomefile: $directori * $nomedelfile 
    "
    ;
                    
                        include 
    "../include/SmartImage.class.php";
                        
    //                    Settings
                        
    $src=$nomedelfile;
                        echo 
    "src: $src 
    "
    ;
                        
    $destination "reserved/images/";
                        echo 
    "destinazione: $destination 
    "
    ;
                        
    //                    Start!
                        
    $img = new SmartImage($src);
                        
    $img->resize(600400);
                        
    $destinazione=$destination.$nomedelfile;
                        echo 
    "*destinazione*: $destinazione 
    "
    ;

                        
    $img->saveImage("$destinazione"60);

                        
    $img->close();                    

    // **************************** FINE smartclass ***************************        

    //                    creo la miniatura
                        
    @makeThumb($path_img$immagine_da_mostrare$nome$tipo$caricamento);
                
    //                    aggiorno il database
                        
    $query "INSERT INTO images_gallery (Titolo, Album, Nome, Tipo, Datatempo_upload, visibile) VALUES ('$nome', 'foto', '$nome', 'foto', NOW(), 'si')";
                        
    $res = @mysql_query($query) or die (mysql_error());
                    
    //                     Stampo a video un po' di informazioni
                        
    echo "Nome: ".$_FILES['file']['name'][$i]."
    "

                        echo 
    "Dimensione: ".$_FILES['file']['size'][$i]." byte 
    "

                        echo 
    "Tipo: ".$_FILES['file']['type'][$i]."
    "

                        echo 
    "Copia eseguita con successo.

    "

    //                    Cancello il file dalla cartella temporanea
    //                    unlink("$directori/".$_FILES['file']['name'][$i]);
                    
    }else{
    //                    stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
                        
    echo "Impossibile eseguire l'upload. Tipo di file non consentito! 
    "
    ;
                        echo 
    "nome file: "$_FILES['file']['name'][$i] .
    "
    ;
                    } 
    // chiudo l'if di in array
                
    // chiudo l'if per verificare di prend solo i nomifile pieni
            
    // Chiudo il cliclo for 
        
    // Chiudo l'if se il campo dell'album è selezionato

    ?>
    </form>
    Quanto ad altervista non ho trovato da nessuna parte dove dice che il PHP installato usa anche le GD.
    ok spero questo possa aiutare a capire qualcosa..
    grazie.

    PS: la classe PHP che fa il ridimensionamento senza librerie GD che ho provato è a questo indirizzo:
    http://free-script.it/post/Script_ph...zionale-54.htm
    PeppePegasus

  8. #8
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Se vai su altervista alla voce crea sito troverai

    Php5 e php4 con GD, CURL, pdoMySQL, MySQLi e supporto connessioni server to server.
    Quanto al tuo codice, prova a togliere tutte le @ vediamo se segnala qualche errore.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  9. #9
    ciao,

    trovato l'errore: allo smart class passavo il nome del file mentre andava passato tutto il percorso dir+nome file.
    Ora devo capire perchè la function per generare la thumbnail non salva la miniatura.
    Ok fattto..problema di percorso in $thumb,"images/tb_".$n, 75)
    Codice PHP:
    <?php

    if ($t == 'image/jpeg'){imagejpeg($thumb,"images/tb_".$n75);}
    elseif (
    $t == 'image/jpg'){imagejpeg($thumb"images/tb_".$n75);}
    elseif (
    $t == 'image/JPG'){imagejpeg($thumb,"images/tb_".$n75);}
    elseif (
    $t == 'image/pjpeg'){imagejpeg($thumb,"images/tb_".$n75);}
    elseif (
    $t == 'image/gif'){@imagegif($thumb,"images/tb_".$n75);}
    elseif (
    $t == 'image/png'){@imagepng($thumb,"images/tb_".$n75);}
    grazie.
    PeppePegasus

  10. #10
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Originariamente inviato da peppepegasus
    Ora devo capire perchè la function per generare la thumbnail non salva la miniatura.
    Potresti andare sul sito di php e vedere se trovi una lista di tutti gli errori possibili e immaginabili e spluciarli uno per uno alla ricerca di quello che ti sembra più plausibile... oppure come ti dicevo prima potresti togliere tutte quelle @ e vedere se ne salta fuori qualcuno
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

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.