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

    upload file con controlli particolari...

    Ciao a tutti, toglietemi questo dubbio sull'upload dei file.

    Ho una pagina che uploada un file tramite form.
    Il php deve controllare che il file non sia gia' esistente, se esite chiedere di rinominarlo/sovrasciverlo e poi effettuare il famigerato move_uploaded_file.

    Il problema e' che io per ora lo faccio in 3 passaggi:

    1- FORM di upload

    2- check, se il file non esiste effettua il move_uploaded_file, altrimenti

    3- chiedi il nuovo nome e poi effettua il move_uploaded_file.


    E' nel punto 3 che ho casini perche' nel momento che costruisco un nuovo form per chiedere cosa farne del file duplicato e tento il move_uploaded_file mi dice che il file temp nella uploadtmp non esiste piu'...
    Possibile?
    Naturalmente se non c'e' nome duplicato il file viene uploadato al punto 2 e tutto fila liscio, quindi mi spiego la cosa ipotizzando che gli $HTTP_POST_FILES non vengano conservati alla successiva visita di quella pagina.

    Per risolvere la questione io vorrei poter controllare il nome del file PRIMA di uploadarlo, in modo tale che PRIMA mi ricavo tutte le informazioni e POI uploado file e lo muovo con il nome corretto. Il tutto e' possibile?

  2. #2
    cavolo, un bel casino...

    secondo me l'unica e' effettuare il controllo lato client con javascript: scegli il file, viene effettuato il controllo, ti si apre una inputbox che ti chiede di inserire il nuovo nome, viene uppato il file e viene rinominato prima del "fatidico"

    solo una idea "concettuale", so di nn esserti di grande aiuto (anche perche' di js...zero ^^'). ma sappi che hai la mia solidarieta' :P

    (anche perche' si tratta di un problema che puo' verificarsi piuttosto spesso...direi anche da [PILLOLA])
    Gabriele B. - http://9thcircle.it

  3. #3
    secondo me l'unica e' effettuare il controllo lato client con javascript: scegli il file, viene effettuato il controllo,...
    Si' ci avevo pensato, pero' comunque l'eventuale file "da sovrascrivere" si trova sul server, quindi il controllo non sarebbe lato-client, ma necessiterebbe comunque di inviare le informazioni al server.

    ma sappi che hai la mia solidarieta' :P
    THX!

  4. #4
    si certo il controllo cmq sarebbe lato server. sembra un caso simile a quei form in cui a seconda della regione che scegli in una select viene aggiornato il campo con le provincie facendo un rapido aggiornamento dal server.

    nn e' proprio la stessa cosa, ma il concetto...
    Gabriele B. - http://9thcircle.it

  5. #5
    si'.

    L'unica cosa che mi viene in mente e':

    - La pagina php, PRIMA di costruire la form, controlla la directory di destinazione e si ricava tutti i nomi dei file contenuti.

    - Viene costruita la form, e quando uno vuole uploadare un file con nome gia' esistente, una funzione javascript controlla e restituisce l'avviso, mostrando un form aggiuntivo in cui ti chiede se vuoi sovrascrivere o rinominare

    - Una volta scelto un nome "accetabile" i dati vengono inviati al server e via da procedura solita...

    Naturalmente non saprei come gestire il tutto in javascript...

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Se non vuoi usare js, puoi salvare il file al primo passaggio in una posizione temporanea (ti crei una cartella apposta), e se il nome di destinazione esiste già proponi un campo di testo per cambiare nome del file, riproponendo il campo fintanto che viene inserito un nome di file già presente.
    Nella terza pagina una volta ricevuto un nome valido sposti il file dalla cartella temporanea alla cartella dell'upload rinominandolo con il nuovo nome.

    Solo php senza bisogno di javascript, unico accorgimento, ogni tanto devi svuotare la cartella temporanea, per eliminare residui di upload non terminati.

    Ciao.

  7. #7
    Questo gia' lo faccio, ma non risolve il problema.

    Immagina che tu hai un 56K e devi fare l'upload di 8MB di file.
    Nel momento in cui scopri che il file gia' esiste sul server, al di la' delle opzioni rinomina/sovrascrivi, verosimilmente se ti si presenta questa opzione significa che hai sbagliato qualcosa. Altrettanto verosimilmente puo' accadere che il file che hai scelto sia quello sbagliato e che tu scopra che quel file NON dovevi uploadarlo, ma ormai l'hai fatto ed hai perso secoli di upload solo perche' non c'e' modo di ricavarsi dalla FORM con l' <INPUT type=file> il semplice nome del file PRIMA dell'upload.

    Mi sembra una bella sola di PHP, ammesso che tutto cio' che ho detto sia vero....

  8. #8
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Il metodo che ti ho suggerito ti evita di ricaricare il file, poi se l'utonto sbaglia a caricare file e carica pippo.avi al posto di cicciolina.avi, non è di certo un problema tuo, e inoltre il controllo del nome non lo risolve in quanto se non sono presenti nessuno dei due comunque gli verrà caricato.

    Se poi vuoi evitare del tutto il problema, rinomina i file in automatico, che so io con un prefisso, così non avrai mai duplicati, ad esempio 'pippo.avi' lo salvi come '01pippo.avi' e ti salvi (magari in un file di testo sul server' il numero di sequenza a cui sei arrivato.

  9. #9
    Originariamente inviato da fabi080
    Il metodo che ti ho suggerito ti evita di ricaricare il file, poi se l'utonto sbaglia a caricare file e carica pippo.avi al posto di cicciolina.avi, non è di certo un problema tuo, e inoltre il controllo del nome non lo risolve in quanto se non sono presenti nessuno dei due comunque gli verrà caricato.

    Se poi vuoi evitare del tutto il problema, rinomina i file in automatico, che so io con un prefisso, così non avrai mai duplicati, ad esempio 'pippo.avi' lo salvi come '01pippo.avi' e ti salvi (magari in un file di testo sul server' il numero di sequenza a cui sei arrivato.
    io faccio esattamente così in una galleria di download/upload che ho creato.. metto un prefisso progressivo davanti al nome e poi un _ in modo da poter poi anche utilizzare quest aparte del nome per mantenere i file uplodati in ordine cronologico..
    ..l'alternativa è salvarlo con un nome temporaneo, poi chiedere di rinominarlo o l aconferma di sovrascrivere e poi traferire il file e cancellare il temporaneo, come già detto..

    ciau..
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  10. #10
    Probabilmente mi sono spiegato male, perche' anch'io faccio cosi', ma non e' questo il punto.

    Se un utente sbaglia ad uploadare il file BBB.zip e uploada il file AAA.zip che aveva gia' uploadato, non c'e' modo per fare il controllo prima che il file venga caricato sul server, quindi mi pare uno spreco di risorse perche' non c'e' possibilita' di fare alcun controllo finche' il file non e' arrivato sul server...

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.