Back to top

Autore Topic: [RISOLTO] Inserire campo upload in form registrazione  (Letto 3699 volte)

Offline vinset

  • Appassionato
  • ***
  • Post: 677
  • Sesso: Maschio
    • Mostra profilo
Qualcuno potrebbe dirmi come inserire un campo per l'upload di un file nel form di registrazione senza l'utilizzo di altri componenti specifici. In parole povere, le righe di codice da inserire. Allo stato attuale ho inserito nel form il campo upload file e creato una campo nella tabella jos_users nel quale immagazzinare il percorso del file. Allo stato attuale, quindi, viene esclusivamente salvato il nome del file all'interno del database ma non viene salvato il file stesso in una cartella.
« Ultima modifica: 18 Dic 2010, 20:14:20 da vinset »
/* Il perder tempo a chi più sa più spiace */

mau_develop

  • Visitatore

Offline vinset

  • Appassionato
  • ***
  • Post: 677
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire campo upload in form registrazione
« Risposta #2 il: 16 Dic 2010, 15:29:18 »
Grazie per il link! Il problema ora è questo: su quale file devo agire?
/* Il perder tempo a chi più sa più spiace */

Offline vinset

  • Appassionato
  • ***
  • Post: 677
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire campo upload in form registrazione
« Risposta #3 il: 16 Dic 2010, 17:11:11 »
Ho risolto quasi in toto il problema!

Ho aggiunto al file user.php che risiede nella cartella libraries/joomla/database/table la seguente porzione di codice:
Codice: [Seleziona]
$file = JRequest::getVar('curriculum', null, 'files', 'array');
jimport('joomla.filesystem.file');
$filename = JFile::makeSafe($file['name']);
 
//Set up the source and destination of the file
$src = $file['tmp_name'];
$dest = JPATH_BASE . DS . "curriculum" . DS . $filename;
$this->curriculum = $dest;

Funziona sia la memorizzazione del file nella cartella che del suo percorso di residenza nel database.
Il problema si pone nel caso in cui un utente carica un file avente lo stesso nome di uno precedentemente caricato in quanto lo stesso si va a sovrascrivere a quello esistente.
Come potrei ovviare a questo problema?
/* Il perder tempo a chi più sa più spiace */

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire campo upload in form registrazione
« Risposta #4 il: 17 Dic 2010, 11:38:59 »
Ciao io uso un semlice escamotage, ovvero aggiungo un numero in fondo ai file che si sovrappongono.
Ti spiego il meccanismo copiato da un componente che ho sviluppato adattato al tuo esempio

      $file = JRequest::getVar('curriculum', null, 'files', 'array');
      jimport('joomla.filesystem.file');
      $filename = JFile::makeSafe($file['name']);
 
      //Set up the source and destination of the file
      $src = $file['tmp_name'];
      $filename_tmp=$src;
      $j=1;
      $directory=JPATH_BASE . DS . "curriculum" . DS;
      while(JFile::exists($directory.$filename_tmp)){
      $filename_tmp=JFile::stripExt($src).'_'.$j.'.'.JFile::getExt($src);
      $j++;
      }


      $dest = $directory.$filename_tmp;
      $this->curriculum = $dest;

Spero di esserti stato d'aiuto.
buona giornata
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline vinset

  • Appassionato
  • ***
  • Post: 677
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire campo upload in form registrazione
« Risposta #5 il: 18 Dic 2010, 20:13:40 »
Grazie mille per il suggerimento!
Ecco il codice con cui ho risolto il problema:
Codice: [Seleziona]
//Upload file
$file = JRequest::getVar('curriculum', null, 'files', 'array');
jimport('joomla.filesystem.file');
$filename = JFile::makeSafe($file['name']);
 
//Set up the source and destination of the file
$src = $file['tmp_name'];
$dest = JPATH_BASE . DS . "curriculum" . DS . $filename;
$ext = strtolower(JFile::getExt($filename));
$j=1;
while(JFile::exists($dest)){
$filename=JFile::stripExt($filename).'_'.$j.'.'.$ext;
$j++;
$dest = JPATH_BASE . DS . "curriculum" . DS . $filename;
  }
$this->curriculum = $filename;
JFile::upload($src, $dest);
/* Il perder tempo a chi più sa più spiace */

Offline merovingi0

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Re:Inserire campo upload in form registrazione
« Risposta #6 il: 22 Gen 2011, 14:38:23 »
Ho risolto quasi in toto il problema!

Ho aggiunto al file user.php che risiede nella cartella libraries/joomla/database/table la seguente porzione di codice:
Codice: [Seleziona]
$file = JRequest::getVar('curriculum', null, 'files', 'array');
jimport('joomla.filesystem.file');
$filename = JFile::makeSafe($file['name']);
 
//Set up the source and destination of the file
$src = $file['tmp_name'];
$dest = JPATH_BASE . DS . "curriculum" . DS . $filename;
$this->curriculum = $dest;

Funziona sia la memorizzazione del file nella cartella che del suo percorso di residenza nel database.
Il problema si pone nel caso in cui un utente carica un file avente lo stesso nome di uno precedentemente caricato in quanto lo stesso si va a sovrascrivere a quello esistente.
Come potrei ovviare a questo problema?

mettendo questo codice è possibile uploadare file??
in che posizione lo devo mettere dentro la pagina user.php?

 



Web Design Bolzano Kreatif