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

    upload file: come gestirlo al meglio

    devo fare un'applicazione che permetta l'upload di files. Dal punto di vista tecnico non ho grandi problemi ma volevo capire come è meglio gestire il tutto al meglio.

    Intendo come struttura di DB e delle cartelle.

    Ad esempio per ogni file caricato creo un record nella relativa tabella attachments (uso cakephp, ma è un dettaglio). Che informazioni mi conviene salvare nella tabella a parte il nome del file? Il tipo di file, per esempio? O me lo ricavo dall'estensione?

    E poi: che nome meglio dare ai files caricati? Tengo il nome originale del file? Oppure uso l'id del record o qualche altra combinazione di stringhe?

    Boh, si accettano consigli

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Ma mettici anche grandezza file, e si sarebbe meglio utilizzare il nome dei file originali...

  3. #3
    Originariamente inviato da Ophy94
    Ma mettici anche grandezza file, e si sarebbe meglio utilizzare il nome dei file originali...
    se non c'è qualche motivo particolare, è molto meglio modificare il nome del file con una stringa casuale o con un hash. Questo elimina dei nomi file potenzialmente non validi, con spazi o caratteri particolari che in locale funzionano ma sul server potrebbero dare problemi.

    Di solito si fa così

    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  4. #4
    Originariamente inviato da mtx_maurizio
    se non c'è qualche motivo particolare, è molto meglio modificare il nome del file con una stringa casuale o con un hash. Questo elimina dei nomi file potenzialmente non validi, con spazi o caratteri particolari che in locale funzionano ma sul server potrebbero dare problemi.

    Di solito si fa così

    Ottimo grazie, è quello che pensavo di fare infatti. Pero' a questo punto mi sfugge una cosa (forse mi perdo in un bicchier d'acqua pero'):

    ipotizzando di avere il nome 'vero' del file nel DB e di aver invece salvato il file con un hash, come faccio a creare un link al file che permetta di scaricarlo col nome originario?

    se faccio
    codice:
    prova.pdf
    se poi l'utente fa un 'salva con nome' si trova un file denominato acd6fd546f.pdf e non prova.pdf

  5. #5
    sono un novizio, ma ho già affrontato questo problema è nel mio piccolo ho risolto così...

    Mi sono scaricato lo script sanitize al suo interno c'è la funzione PARANOID che elimina gli spazi o gli eventuali caratteri speciali, cosi faccio rinominare il file al mio scipt usando Paranoid
    tipo così:
    codice:
    $filename=$id_img.'_'.$_FILES['file']['name'];
    $estensioni_ammesse=array('jpg','jpeg','gif','png');
    			$estensione=substr($filename,strpos($filename,'.')+1,(strlen($filename)-strpos($filename,'.')));
    			$filename_old=sanitize($filename, PARANOID);
    			$filename_new=''.$filename_old.'.'.$estensione.'';
    in questa maniera se il file che carico si chiama "mia guida personale.pdf" avrò un risultato del tipo

    80miaguidapersonalepdf.pdf

    dove 80 sta a significare l'id dell'immagine, così facendo non avrò duplicati nel sul db ne dentro la cartella dove andro a salvare i file perchè l'id dell'immagine sarò con A.I e quindi mai uguale...

    spero di esserti stato utile

  6. #6
    Originariamente inviato da raven74
    Ottimo grazie, è quello che pensavo di fare infatti. Pero' a questo punto mi sfugge una cosa (forse mi perdo in un bicchier d'acqua pero'):

    ipotizzando di avere il nome 'vero' del file nel DB e di aver invece salvato il file con un hash, come faccio a creare un link al file che permetta di scaricarlo col nome originario?

    se faccio
    codice:
    prova.pdf
    se poi l'utente fa un 'salva con nome' si trova un file denominato acd6fd546f.pdf e non prova.pdf
    Invece di linkare direttamente il file, usa uno script che lo fa scaricare. In questo modo puoi impostare le header come vuoi (e quindi specificare il nome del file che verra' salvato sul client) e inviare i dati del file reale tramite readfile().

    E' bene rinominare i file uploadati anche per evitare sovrascritture dovute ad ominimie.

  7. #7
    Originariamente inviato da k.b
    Invece di linkare direttamente il file, usa uno script che lo fa scaricare. In questo modo puoi impostare le header come vuoi (e quindi specificare il nome del file che verra' salvato sul client) e inviare i dati del file reale tramite readfile().

    E' bene rinominare i file uploadati anche per evitare sovrascritture dovute ad ominimie.
    Ok, immaginavo che alla fine la soluzione sarebbe stata qualcosa di simile. In questo modo tra l'altro ho più controllo sui files che vengono scaricati dagli utenti. Grazie mille.

    Credo di essere in grado di farlo, tuttavia potresti cortesemente indicarmi una guida/tutorial per fare le cose per benino?

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.