Joomla.it Forum

Non solo Joomla... => Sviluppo => : vinset 16 Dec 2010, 11:50:18

: [RISOLTO] Inserire campo upload in form registrazione
: vinset 16 Dec 2010, 11:50:18
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.
: Re:Inserire campo upload in form registrazione
: mau_develop 16 Dec 2010, 12:46:21
http://api.joomla.org/Joomla-Framework/FileSystem/JFile.html

M.
: Re:Inserire campo upload in form registrazione
: vinset 16 Dec 2010, 15:29:18
Grazie per il link! Il problema ora è questo: su quale file devo agire?
: Re:Inserire campo upload in form registrazione
: vinset 16 Dec 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:
:
$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?
: Re:Inserire campo upload in form registrazione
: simone83 17 Dec 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
: Re:Inserire campo upload in form registrazione
: vinset 18 Dec 2010, 20:13:40
Grazie mille per il suggerimento!
Ecco il codice con cui ho risolto il problema:
:
//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);
: Re:Inserire campo upload in form registrazione
: merovingi0 22 Jan 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:
:
$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?