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

Discussione: $_FILES persistente

  1. #1

    $_FILES persistente

    Ciao tutti, vorrei sapere se qualcuno di voi si è mai trovato di fronte ad un problema simile:

    Avete un normale form html con un campo text e uno file.
    Una volta inviato il form invece di andare subito ad elaborare gli array $_POST e $_FILES volete passare da una pagina intermedia per riepilogare i dati appena inseriti.

    Se tutto ok si procede con il salvataggio dei dati. Per i $_POST no problem, ma per i $_FILES non si riesce proprio a mantenerli.

    Domanda: è possibile recuperare il campo file da un form ed elaborarlo in una pagina che non sia necessariamente consecutiva a quella che ha spedito i dati ????

    Grazie
    Ciao
    Divide at Impera

    Se mi vuoi visitare Milano con il tuo cellulare vai su infomilano.mobi

  2. #2

    Re: $_FILES persistente

    Originariamente inviato da a.prenz
    Domanda: è possibile recuperare il campo file da un form ed elaborarlo in una pagina che non sia necessariamente consecutiva a quella che ha spedito i dati ????

    Grazie
    Ciao
    Usa le sessioni.

    session_start();
    $_SESSION['nome'] = $_FILES['nome'];


    poi nelle pagine successive...

    session_start();
    $_FILES['nome'] = $_SESSION['nome'];

    se ti piace usare oppure hai gia' lo script con $_FILES altrimenti puoi usare tranquillamente $_SESSION.

    ['nome'] deve essere quello assegnato nel form (por supuesto)...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Si hai ragione a questa soluzione avevo pensato anche io, ma allora vorrei un chiarimento.

    Il fatto di messere l'array $_FILES in sessione sicuramente rende persistenti i dati descrittivi del file da caricare, compreso il percorso del file temporaneo, l'unica cosa che però mi fa riflettere è ma il file temporaneo resta fisicamente presente nella directory temporane per tutta la sessione ????

    Io ho provato a fare così, ma al momento di muovere il file dal temporaneo al path definitivo del mio sito mi dava errore come se il percorso nn fosse valido.

    Ho sbagliato qualcosa ??

    Ciao
    Grazie
    Divide at Impera

    Se mi vuoi visitare Milano con il tuo cellulare vai su infomilano.mobi

  4. #4
    E un bel quesito il tuo. Credo che in tmp esista solo il tempo dello script. Infatti pensavo al fatto che tu volessi posticipare non la gestione del file, ma solo i dati da mettere magari in un db.

    Puoi sempre cancellare il file dopo se le cose non vanno a buon fine. i dati li hai.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    E si.... avevo pensato anche io di parcheggiare il fiel da qualche parte per poi spostarlo al posto giusto se la registrazione andava a buon fine o eliminarlo in caso contrario, ma speravo esistesse una soluzioene meno impegantiva.

    Grazie comunque per le tue risposte
    Divide at Impera

    Se mi vuoi visitare Milano con il tuo cellulare vai su infomilano.mobi

  6. #6
    Secondo me la teoria di piero.mac dovrebbe funzionare.
    Infatti tu dalla form invii un file in una directory temporanea e ti tieni traccia di tale percorso nella variabile $_FILES, che altro non è che un array di dati.
    Dunque fare $_SESSION['nome']=$_FILES['nome'] e nella pagina di upload definitiva mettere $_FILES['nome']=$_SESSION['nome'] dovrebbe rimetterti tutti i dati dell'array giusti.
    L'unica cosa è capire appunto circa la dir temporanea.
    Nel PHP.ini compare ad un certo punto questo:

    codice:
    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;
    
    ; Whether to allow HTTP file uploads.
    file_uploads = On
    
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    upload_tmp_dir = "C:\www\tmp\"
    
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 1M
    dunque la dir temporanea, trovandosi su spazio fisico e non su memoria virtuale, dovrebbe continuare ad esistere...
    L'unica è cmq provare: tienici aggiornati che interessa pure a me!!
    .: Teju.it - Una vita da raccontare
    .: 8s8.it - Wordpress gratis per tutti
    .: Vado.li - Accorcia URL

  7. #7
    OK nel pomeriggio faccio un test e vi faccio sapere

    Divide at Impera

    Se mi vuoi visitare Milano con il tuo cellulare vai su infomilano.mobi

  8. #8
    Però potrebbe anche darsi che una volta terminato lo script il file, anche se magari non cancellato fisicamete, non sia più accessibile. Cmq attendiamo con interesse la propva. Ciao!

  9. #9
    Ho fatto un test, ma come pensavo non funziona.

    Il fatto è che nella directory temporanea non viene scritto fisicamente il file, almeno tendo la finetra aperta al momento dell'invio non scrive nulla se non il file di sessione con all'interno i dati riguardanti il file.

    Ho paura che una volta che la pagina di ricezione del form è stata finita di elaborare il file sia perso.

    Ora mi chiedo ma nessuno ha mai fatto un form con riepilogo e con un upload in mezzo ??

    BOH cercherò ancora...... se mai dovessi risolvere posterò.

    Ciao a tutti
    Divide at Impera

    Se mi vuoi visitare Milano con il tuo cellulare vai su infomilano.mobi

  10. #10
    come ti ha detto piero ... usa le sessioni

    ma ... in un'altro modo

    quando ti arriva l'array files ... lo uppi all'interno di una cartella temporanea e il nome del file lo fai corrispondere ad un timestamp + un id ... un id che riguarda l'utente di cui è propietario il file

    in questo modo stabilisci che i file + vecchi di 24 ore devono essere eliminati e con glob ti cicli i file della cartella con estensione jpg o gif o quello che vuoi

    una volta compiuta l'operazione che ti serve eseguire ... prendi questi file e li sposti con copy (ricordati di eliminare il file temporaneo dopo la copia)

    mmm basta

    in pratica:
    - uppa il file in una dir temporanea e conserva il nome tramite sessioni, di php o meno (ovvero su db)
    - spostalo dove ti serve appena finisci

    in fine
    ogni volta che esegui l'upload dei file fai anche un controllo e verifichi che il timestamp riportarti nel nome del file sia inferiore a 24 ore altrimenti il file eliminato

    suggerimento: i file chiamali tipo $id_$timestamp.ext in questo modo elimini l'estensione tramite explode ... e poi tramite un'altro explode acquisisce l'id e il timestamp del file ... e quindi puoi fare la differenza con il timestamp attuale e vedere se il risultato è maggiore di 24 ore

    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.