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

    riconoscere tipo di immagini da campo input file...

    Ciao a tutti,

    ho un form di upload immagini, vale a dire un campo di input di tipo file, con nome "file".
    Quando processo questo campo, con una pagina di controllo php, vorrei che in base al tipo di immagine da caricare si svolgessero delle determinate procedure...

    per esempio...
    se l'immagine da caricare è un jpg fai una determinata cosa, se è gif un'altra e cosi' via.
    In effetti questa condizione mi serve per creare delle immagini in miniature e dovendo usare le funzioni

    imagecreatefromjpeg, imagecreatefromgif, imagecreatefrompng

    dovrei sapere in partenza quale funzione usare in base al tipo di immagine che viene caricata.

    Praticamente mi serve qualche funzione che verifichi il tipo di file che si intende caricare e procedere di conseguenza...

    es.

    if($file è una immagine gif){
    esegui le operazioni per le gif...
    }
    else if ($file è una immagine png){
    esegui le operazioni per le png...
    }

    e cosi' via

  2. #2
    Non so se funziona bene....
    Prova questo
    Codice PHP:
    $type=$_FILES['immagine']['type'];

    if(
    $type == "image/gif" ){
        ...
    istruzioni
    }elseif ($type == "image/pjpeg" ||$type == "image/jpeg") {
       ...
    istruzioni


  3. #3
    Io normalmente mi fido delle estensioni (ma dipende dal tipo di utente che hai!)
    ed uso questo:

    Codice PHP:
    $estsubstr$value ,strlen($value)-strlen($value)); 
    che mi restituisce l'estensione del file (comprensiva di punto per i formati a 3 lettere)
    poi da li elabori con switch o if, come preferisci...

  4. #4
    $est, mi restituisce valori strani tipo in codice....

    m7di, f4fo ect, l'atro suggerimento non funge....


    come fare?

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da aleritty
    Io normalmente mi fido delle estensioni (ma dipende dal tipo di utente che hai!)
    ed uso questo:

    Codice PHP:
    $estsubstr$value ,strlen($value)-strlen($value)); 
    che mi restituisce l'estensione del file (comprensiva di punto per i formati a 3 lettere)
    poi da li elabori con switch o if, come preferisci...
    Per estrarre l'estensione in modo sicuro ti consiglio di fare cosi:

    codice:
    $est = array_pop(explode('.', $filename));
    Per il discorso del myme-type tenete presente che dipende dal browser, quindi potrebbe essere diversa a seconda del browser con cui si è fatto l'upload.

    Il fatto che un file sia o meno un immagine controllando l'estensione, non è effettivamente sicurissimo, daniele_dll aveva scritto qualcosa per controllare l'effettivo contenuto di un file, solo che non ho il link della discussione qui sul forum.

    ciao

  6. #6
    Originariamente inviato da gianiaz
    Per estrarre l'estensione in modo sicuro ti consiglio di fare cosi:

    codice:
    $est = array_pop(explode('.', $filename));
    MMh... e poi si contano i campi dell'array e si usa sempre l'ultimo... beh si!

    Comunque, molto strano che $est (del mio script) ti restituisca cose strane... non è che lo stai usando sui file temporanei e non sul file memorizzato? Perchè se lo usi sui files temporanei, non funziona nessun metodo che non si basi sulla determinazione del mimetype!

    Quindi, o usi la determinazione del tipo di file, oppure salvi il file e se non è una immagine lo cancelli...

    La determinazione del tipo di file, la fai con i magic number, quindi fai leggere a php i primi bit del file (tipo i primi 8 se non ricordo male) e poi li interpreti, ad esempio i file GIF iniziano tutti con la sigla GIFXXa (dove xx è un numero 87 o 89, non ricordo ora...) con quelli vai sul "sicuro" (in realtà è bucabile anche questo sistema, e combinarli ha poco senso!)

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.