Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Problema File Upload

  1. #1

    Problema File Upload

    Ciao a tutti! Ho un nuovo, piccolo problemino, dopo quello del str_replace()...
    Questa volta gioco con le immagini. Sto cercando di creare una galleria di immagini
    tramite un upload fatto dagli utenti. Idea centrale dello script è di creare
    un thumbnail (una versione ridotta) del file inviato in modo da caricare le anteprime piccole
    più velocemente.
    Nel file dove viene effettuato l'upload, tra le prime righe, c'è:
    codice:
     
    <?php
    
    if(isset($_FILES['imagewn']))
    {
      
      copy( $_FILES['immagine'] , "c:\\Intepub\\wwwroot\\public\\galleria\\" ); // Gira IIS
      createthumb($_FILES['imagewn']['tmp_name']);
    }
    ?>
    E nel file delle funzioni (un file che viene incluso all'inizio dello script)
    c'è la definizione della funzione createthumb().

    Prima ve la descrivo in breve (perchè in effetti è un aggregato di script più
    piccoli trovati qui e là su internet e adattati alle mie esigenze): alla funzione
    passo come parametro il nome del file e la cartella, e lei prende questo percorso
    per ridurre l'immagine richiesta:
    codice:
     
    <?php
    function createthumb($uploaded_file)
    {
    	
    	$unic_string = md5(time()); //Lo uso per attribuire un nome unico al filename	
    	# Controllo dell'estensione per vedere quale funzione utilizzare e definizione nomeunivoco
    	$ext = strtolower(end(explode('.', $uploaded_file)));
    	
    	//Definizione VARIABILI 	
    	$immgrande_path = "c:\\Intepub\\wwwroot\\public\\galleria\\";
    	$immgrande = "1_" . $unic_string . "." . $ext;
    	$immpiccola_path = $immgrande_path;
    	$immpiccola = "thumb_1_" . $unic_string . "." . $ext;
    	
    	$grandeabs = $immaginegrande_path . $immgrande;
    	$piccolaabs = $immpiccola_path . $immpiccola;
    	$httpurl_big = "http://localhost/public/gallery/$immgrande";
    	$httpurl_small = "http://localhost/public/gallery/$immpiccola";
    	$hG = 97;
    	$wG = 127;
    	
    	
    	
    	rename("$immaginegrande_path/$uploaded_file", $grandeabs);
    	
    	if(file_exists($grandeabs))
    	{
    	 	if ($ext == 'jpg' || $ext == 'jpeg') {
        		createjpg_thumb() //Questa funziona
    	  } 
    	}
    	else
    		create_alert("Impossibile trovare il file source!"); //Questa è un'altra funzione che crea una finestra js di errore.    
    
    }
    Quello che mi ritorna è proprio una finestra js con scritto "Impossibile trovare il file source"
    Può essere che magari è Aruba che non lascia i permessi di fare questo? (Se state per rispondere che i percorsi per Aruba sono sbagliati: Lo so, i percorsi nello script con Aruba non funzionano :P)

    Grazie 1000 in anticipo
    Marco
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  2. #2
    Diciamo che hai spiegato bene quello che vuoi fare ma manca la parte dove dici perchè non funziona! Che errori ti dà? Perchè dici che non funziona?

    Cmq al 90% dipende dal fatto che aruba non ha le gd installate. Il rimanente 10% dipende da altri fattori. ma se in locale hai le gd installate e lo script funziona allora dipende dalle gd. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    no no proprio si ferma perchè dice che non trova il file sorgente...
    quindi, di fatto, o fa casino con l'upload del file o con il rename o con lo spostamento o con il passaggio dei parametri alla funzione...
    però le gd sono un problema secondario: la funzione si blocca all'if:
    codice:
    if(file_exists($grandeabs))
    	{
    	 	if ($ext == 'jpg' || $ext == 'jpeg') {
        		createjpg_thumb() //Questa funziona
    	  } 
    	}
    	else
    		create_alert("Impossibile trovare il file source!"); //Questa è un'altra funzione che crea una finestra js di errore.
    e mi ritorna "Impossibile trovare il file source!"...

    Ehm... ho fatto un po' di casino, spero comunque di averti chiarito un po' le idee ^^'
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  4. #4
    up
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  5. #5
    Se il problema è il path allora prova a stamparne il valore per vedere cosa c'è che non va e correggere di conseguenza.
    Secondo me ti stamperà un path come questo:

    c:\\Intepub\\wwwroot\\public\\galleria\\

    Se è così prova a definirlo in questo modo:

    c:\Intepub\wwwroot\public\galleria\
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  6. #6
    ora ci provo, nel caso posto ancora ^^
    grazie in anticipo intanto
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  7. #7

    machhè

    Niente, ho provato sia con

    c:\Intepub\wwwroot\public\galleria\

    che anche con

    c:/Intepub/wwwroot/public/galleria/

    (oltre al metodo di prima ma comunque non funziona...)

    Secondo me bisogna chiamare un esorcista...

    La cartella ha i permessi 775 ma purtroppo non li posso cambiare... Il giorno che pubblico lo script su Aruba se no non me lo accetta (comunque ho provato a cambiarli e non è li il problema...)

    Nessun'altra idea? L'algoritmo è corretto comunque, giusto?
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  8. #8

    ho fatto un po' di pulizia

    Ho fatto un po' di pulizia in modo che la cosa sia più facile da leggere e da interpretare:

    Qui la porzione di script presente nella pagina di upload delle immagini (e che richiama la funzione --> vd. sotto)

    Codice PHP:
    if(isset($_FILES['imagewn']))
    {
      
    //Prima copio il file inviato sul server nella mia cartella
      
    copy$_FILES['immagine'] , "c:/Intepub/wwwroot/public/galleria/" ); // Gira IIS
      //Poi richiamo la funzione per creare l'immagine in versione ridotta (passandogli solo il nome del file)
      
    createthumb($_FILES['imagewn']['tmp_name']);

    Qui la dichiarazione della funzione (commentata):

    Codice PHP:
    function createthumb($uploaded_file)
    {
        
        
    $unic_string md5(time()); //Lo uso per attribuire un nome unico al filename    
        # Controllo dell'estensione per vedere quale funzione utilizzare e definizione nomeunivoco
        
    $ext strtolower(end(explode('.'$uploaded_file)));
        
        
    //Definizione VARIABILI     
        
    $immgrande_path "c:/Intepub/wwwroot/public/galleria/"//Il percorso di dov'è salvata l'immagine originale
        
    $immgrande "1_" $unic_string "." $ext//Il nome dell'immagine originale
        
    $immpiccola_path $immgrande_path//Il percorso dov'è salvata l'immagine piccola (che sarà uguale a quello in cui è salvata l'immagine grande)
        
    $immpiccola "thumb_1_" $unic_string "." $ext//Il nome da attribuire all'immagine piccola
        
    $grandeabs $immaginegrande_path $immgrande//Il percorso assoluto (sul server) del file immagine GRANDE
        
    $piccolaabs $immpiccola_path $immpiccola//Il percorso assoluto (sul server) del file immagine PICCOLA
        
    $httpurl_big "http://localhost/public/gallery/$immgrande"//Percorso http del file immagine grande
        
    $httpurl_small "http://localhost/public/gallery/$immpiccola"//Percorso http del file immagine piccola


    // Queste variabili servono per altre funzioni, non riguardano il mio problema :)
        
    $hG 97//Al
        
    $wG 127;
        
        
        
    // Qui dovrebbe rinominare il file immagine inviato secondo le variabili indicate sopra
        
    rename("$immaginegrande_path/$uploaded_file"$grandeabs);

        
    // E qui controlla, appunto, che il lavoro sia stato fatto
        
    if(file_exists($grandeabs))
        {
             if (
    $ext == 'jpg' || $ext == 'jpeg')  createjpg_thumb() // Qui ridimensiona l'immagine 
        
    }
        else 
    //Nel caso ritorni errore...
            
    create_alert("Impossibile trovare il file source!"); //Questa è un'altra funzione che crea una finestra js di errore.


    E guarda caso mi ritorna SEMPRE "Impossibile trovare il file source"...
    Sarà anche la finestra in js che indispone con quel suo "sdling" ma... uff... :P
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  9. #9
    Aspetta un attimo! Ma tu stai parlando di file temporanei caricati sul server! Devi usare move_uploaded_file riferendoti al parametro $_FILES['upload_field_name']['tmp_name'] altrimenti non funzionerà mai!

    Leggi questa guida per capire come si fa un upload:

    Upload con php
    Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Ciao mircov!

    Scusa mi sono dimenticato di postare che ho provato anche quel metodo:

    Codice PHP:
    @move_uploaded_file() 
    ma non funzionava. Così, dovendo sviluppare uno script che girasse su IIS, ho pensato di trovarne uno già testato, e ho guardato qui .
    Il problema è che qui usa copy() e allora ho cambiato la funzione (tanto non funzionava prima, tanto valeva provarla anche così! :P)

    Quindi il problema è da un'altra parte...
    (colpa dello zio Bill, secondo me.. :P)
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

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.