Visualizzazione risultati 1 fino 6 di 6

Discussione: [PHP] Upload temporaneo per prendere il contenuto del file

  1. #1
    Guest

    Cool [PHP] Upload temporaneo per prendere il contenuto del file

    Ciao a tutti, sto cercando un metodo per prendere il contenuto di un file situato nel computer. Io per adesso sto usando questo: in pratica un semplice modulo per caricare un file, che poi prelevato il contenuto viene cancellato.
    Codice PHP:
    move_uploaded_file($_FILES["img"]["tmp_name"],getcwd()."/".$_FILES["img"]["name"]);
    // altro codice php etc...
    $file = file_get_contents($_FILES["img"]["name"]);
    echo
    $file;
    // altro codice php etc...
    unlink($_FILES["img"]["name"]);
    C'è una funzione o un qualcosa che conoscete che può fare quello che voglio io?
    Grazie mille! ^^"

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Il tuo metodo credo vada bena, ma credo che non dovresti usare la funzione getcwd() ( visto che ritorna un valori booleano ), cmq se non lo usi il file si sposta automaticamente nella cartella corrente.

    In oltre puoi provare anche questi due metodi ( per avere più controllo sullo script ):
    Codice PHP:
    // Recupero dati campo file
    $tmp_name = $_FILES["img"]["tmp_name"];
    $name = $_FILES["img"]["name"];

    // Controlla se il file e stato caricato correttamente
    if ($_FILES["img"]["error"]) {
    echo
    "Errore nel caricamento dell'immagine";
    }else {
    // Controllo se il file caricato è un'immagine
    if (eregi(((".png")|(".gif")|(".bmp")|(".jpg")), $tmp_name) {
    echo
    "Estensione file non supportato";
    } else {
    // Se il file non viene spostato nella cartella desiderata
    if (!move_upload_file($tmp_name, $name)) {
    echo
    "Errore nell'invio del file";
    }else {
    echo
    "File inviato correttamente<br /><img src=\"dir_upload/$tmp_name\" alt=\"$tmp_name\" />";
    }
    }
    }
    Non lo provato ma dovrebbe andare, nel caso non andasse prova senza controllare se il file è un'immagine modificando il codice in questo modo:
    Codice PHP:
    // Recupero dati campo file
    $tmp_name = $_FILES["img"]["tmp_name"];
    $name = $_FILES["img"]["name"];

    // Controlla se il file e stato caricato correttamente
    if ($_FILES["img"]["error"]) {
    echo
    "Errore nel caricamento dell'immagine";
    }else {
    // Se il file non viene spostato nella cartella desiderata
    if (!move_upload_file($tmp_name, $name)) {
    echo
    "Errore nell'invio del file";
    }else {
    echo
    "File inviato correttamente<br /><img src=\"dir_upload/$tmp_name\" alt=\"$tmp_name\" />";
    }
    }
    }
    Per cancellare prova ad inserire questo codice:
    Codice PHP:
    unlink($name);
    Ultima modifica di sevenjeak : 07-04-2010 alle ore 11.27.32

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Che senso ha salvare il file per poi eliminarlo, quando il file temporaneo è già salvato nel server ($_FILES["img"]["tmp_name"])??

    @sevenjeak:
    Mai visto qualcosa del genere:
    Codice PHP:
    if (eregi(((".png")|(".gif")|(".bmp")|(".jpg")), $tmp_name) {

  4. #4
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Che senso ha salvare il file per poi eliminarlo, quando il file temporaneo è già salvato nel server ($_FILES["img"]["tmp_name"])??
    [...]
    Beh, un valido utilizzo può essere quello di salvare file su un database oppure quello di elaborare il bytecode prima di salvare il file su server ;P

  5. #5
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da matt93 Visualizza messaggio
    Beh, un valido utilizzo può essere quello di salvare file su un database oppure quello di elaborare il bytecode prima di salvare il file su server ;P
    Da quello che lui a scritto, vuole verificare solo il contenuto del file, io credo "è ovvio che il file lo deve eliminare, ormai ha già verificato il suo contenuto, non gli serve più"
    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Mai visto qualcosa del genere:
    Codice PHP:
    if (eregi(((".png")|(".gif")|(".bmp")|(".jpg")), $tmp_name) {
    Mi sono sbagliato, del resto non è da tanto che ho studiato le espressioni regolari, in questo caso tu come la scriveresti la condizione?
    Ultima modifica di sevenjeak : 07-04-2010 alle ore 15.22.05

    Sevenjeak
    Software developer and much more

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Prima di tutto avrei escluso direttamente di controllare l'estensione, controllare il mime-type è la soluzione più sicura.

    Il mime-type puoi trovarlo in $_FILES['nome']['type']

    Codice PHP:
    $ok = array('image/png'); // e così via per tutti i mime-types

    if(in_array($_FILES['nome']['type'], $ok)) {
    // upload
    } else {
    // estensione non valida
    }
    E comunque non è necessario salvare il file se subito dopo lo si vuole cancellare perchè come ho già detto in tmp_name c'è il percorso del file e si possono svolegere le stesse operazioni:

    Codice PHP:
    //move_uploaded_file($_FILES["img"]["tmp_name"],getcwd()."/".$_FILES["img"]["name"]);
    // altro codice php etc...
    $file = file_get_contents($_FILES["img"]["tmp_name"]);
    echo
    $file;
    // altro codice php etc...
    // unlink($_FILES["img"]["name"]);
    P.S. @sevenjeak: usa preg_* per le espressioni regolari, ereg(i)_* ormai è deprecata.
    Volendo seguire la tua soluzione (anche sapendo al rischio che si incorre):
    Codice PHP:
    if(preg_match('#\.(png|bmp|jpg)$#i', $tmp_name))
    Oltre alla funzione deprecata, la sintassi è scorretta perchè hai eseguito l'operatore di bitwise OR tra le stringe ('...') | ('...')
    Ultima modifica di javascripter : 07-04-2010 alle ore 18.07.57

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •