Back to top

Autore Topic: [RISOLTO] Upload file lato Back end: fallito spostamento del file!  (Letto 2290 volte)

Offline saldesiderio

  • Nuovo arrivato
  • *
  • Post: 15
    • Mostra profilo


Ciao a tutti,
sto sviluppando un componente che prevede l'upload di file lato back end.
Sto lavorando con jommla 2.5.


Nel file Cliente.xml ho inserito un field type file:

<field
                    name="file_up"
                    type="file"
                    label="UPLOAD_LABEL"
                    description="UPLOAD_DESC"
                    default=""
      />


Nel file Edit.php della view :


<form action="index.php" method="post" name="adminForm" id="cliente-admin-form" class="form-validate" enctype="multipart/form-data">
......
.......(richiamo i vari input)
</form>




Nel save() del model cliente.php :



            //Retrieve file details from uploaded file, sent from upload form
            $file = JRequest::getVar('jform', null, 'files', 'array');


            //Import filesystem libraries. Perhaps not necessary, but does not hurt
            jimport('joomla.filesystem.file');


            //Clean up filename to get rid of strange characters like spaces etc
            $filename = JFile::makeSafe($file['name']);


            //Set up the source and destination of the file
            $src = $file['tmp_name'];
            $dest = JPATH_COMPONENT . DS . "uploads" . DS . $file['name'];
           
            JFile::upload($src, $dest);


            parent::save($data);




Quando effettuo il save mi da il seguente errore:
 - fallito spostamento del file!


Dove sbaglio?


Grazie
Salvatore
« Ultima modifica: 10 Giu 2014, 20:59:23 da saldesiderio »

mau_develop

  • Visitatore
Re:Upload file lato Back end: fallito spostamento del file!
« Risposta #1 il: 10 Giu 2014, 11:51:44 »
Prova a fare una ricerca sul forum per vedere quando appare quell'errore,  sono sempre due i motivi
..comunque devo avertelo già detto in qualche post, trascuri completamente la sicurezza e varie BP, forse fai cose senza capire realmente il perché...

Offline saldesiderio

  • Nuovo arrivato
  • *
  • Post: 15
    • Mostra profilo
Re:Upload file lato Back end: fallito spostamento del file!
« Risposta #2 il: 10 Giu 2014, 12:08:05 »
Ciao,


in cosa trascuro la sicurezza?


cosa intendi per BP?


Ovvio che una volta capito come effettuare un corretto upload, dovrò inserire una serie di controlli sul file prima del suo caricamento effettivo!


Grazie
S.D.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Upload file lato Back end: fallito spostamento del file!
« Risposta #3 il: 10 Giu 2014, 13:55:49 »
parti dal controllare qual è il nome del field del file!


$file = JRequest::getVar('file_up', null, 'files', 'array');


ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline saldesiderio

  • Nuovo arrivato
  • *
  • Post: 15
    • Mostra profilo
Re:Upload file lato Back end: fallito spostamento del file!
« Risposta #4 il: 10 Giu 2014, 20:21:21 »
Ciao Marco,


- se faccio un var_dump($file) dove:
  $file = JRequest::getVar('file_up', null, 'files', 'array');
 
   mi restituisce null


- se lo faccio su :
  $file= JRequest::getVar('jform',null,'files','array');


  mi restituisce
 
[size=78%]  array[/size][/size][/size][size=78%](size=5)[/size]
  'name' => array (size=1) 'file_up' => string 'DURC.pdf' (length=8) 'type' => array (size=1) 'file_up' => string 'application/pdf' (length=15) 'tmp_name' => array (size=1) 'file_up' => string '/Applications/MAMP/tmp/php/phpWg3qbQ' (length=36) 'error' => array (size=1) 'file_up' => int 0 'size' => array (size=1) 'file_up' => int 74581



Come puoi notare i riferimento al pdf caricato ci sono!


Grazie
S.D.


Offline saldesiderio

  • Nuovo arrivato
  • *
  • Post: 15
    • Mostra profilo
Re:[RISOLTO] Upload file lato Back end: fallito spostamento del file!
« Risposta #5 il: 10 Giu 2014, 21:10:33 »



Finalmente ho risolto,


giustamente $file= JRequest::getVar('jform',null,'files','array'); restituisce un array!
quindi alla funzione JFile::upload vanno passati i percorsi nel modo seguente
JFile::upload($src['file_up'], $dest);




Blocco di codice completo:


//Retrieve file details from uploaded file, sent from upload form
$file = JRequest::getVar('jform', null, 'files', 'array');
           
//Import filesystem libraries. Perhaps not necessary, but does not hurt
jimport('joomla.filesystem.file');


//Clean up filename to get rid of strange characters like spaces etc
$filename = $file['name'];


//Set up the source and destination of the file
$src = $file['tmp_name'];
           
$dest = JPATH_COMPONENT . DS . "uploads" . DS . $filename['file_up'];


JFile::upload($src['file_up'], $dest);




Io ho risolto così!
Ora cercherò di inserire più controlli possibili sul codice per aumentare la sicurezza!!!


Ciao e Grazie a tutti!


S.D

 



Web Design Bolzano Kreatif