Joomla.it Forum

Non solo Joomla... => Sviluppo => : saprile 10 Mar 2015, 16:32:14

: Upload del file...
: saprile 10 Mar 2015, 16:32:14
Buongiorno a tutti, qualcuno potrebbe indicarmi un tutorial (o altro tipo di indicazioni) su come implementare l'inserimento di un file allegato insieme ad altri dati di un form? In pratica ho un form di inserimento record di un componente personalizzato (con n. campi testo), ho la necessità di inserire un file allegato insieme a tutti gli altri campi del form. L'inserimento deve avvenire in due tabelle separate (una per i dati del record e l'altra per i dati dell'allegato) in quanto la relazione tra record e allegato è "1 a n".


Grazie!
: Re:Upload del file...
: steganoga 10 Mar 2015, 18:07:48
non credo esistano, ed è abbastanza complicata la gestione perchè inserisci dati sul fs e sul db che sono entità diverse... e una delle due potrebbe fallire.
In pratica non esiste un tutorial perchè è "banale php" che prende i dati da un campo di form di tipo "file".

Ricorda anche che un file va anche controllato e verificato che sia coerente all'estensione e all'header che presenta, prima di effettuare un upload e deve essere molto ben curata la sicurezza perchè riuscire ad uploadare una shell vuol dire controllare l'intero sito e db ;)
: Re:Upload del file...
: saprile 10 Mar 2015, 18:15:26
Si hai ragione, capisco che si tratti di banale codice, ma mi riferivo proprio ad una guida che facesse riferimento proprio alla sicurezza e al mantenimento del principio MVC di Joomla. Non ho trovato nulla di affidabile...
: Re:Upload del file...
: giovi 15 Mar 2015, 11:36:30
Ciao saprile, hai già analizzato questo tutorial?
https://docs.joomla.org/Creating_a_file_uploader_in_your_component

Puoi forzare la scrittura sul secondo database con le classiche api di Joomla:
https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase
: Re:Upload del file...
: steganoga 15 Mar 2015, 19:55:10
@giovi... hai visto che in quel tutorial non funziona nessun link?
: Re:Upload del file...
: giovi 16 Mar 2015, 09:59:45
Azz... è vero.. perché non lo segnali alla community?


A saprile sarà più utile questo allora: https://docs.joomla.org/How_to_use_the_filesystem_package#Upload_a_file
NB: nel tag form deve essere presente l'attrubuto enctype="multipart/form-data" altrimenti il file caricato non viene considerato correttamente
: Re:Upload del file...
: saprile 16 Mar 2015, 14:43:54
Grazie Ragazzi, saranno sicuramente utili, vi farò sapere al più presto!!!


Grazie 1000
: Re:Upload del file...
: steganoga 16 Mar 2015, 17:50:06
Azz... è vero.. perché non lo segnali alla community?
------------------------------------------------------------------------------

1) perchè non esiste una community
2) perchè finora tutti quelli con cui ho avuto a che fare di j.com mi sono sembrati degli emeriti idioti, senza una basilare cultura necessaria a capire cosa ti sta dicendo il tuo interlocutore.

comunque il motivo per cui non funziona più nulla è probabilmente questo: http://seclists.org/fulldisclosure/2013/Mar/116

Per quanto riguarda il problema dell'upload di un file, come dicevo prima, è molto oneroso curare l'aspetto sicurezza e se si salvano contemporaneamente dei dati riguardanti il file nel database, bisogna gestire le eccezioni e non è banale credimi... prima credo fosse addirittura un massacro, ora hanno lievemente migliorato alcune cose inserendo dei triggers prima e dopo il salvataggio dei dati che si possono sfruttare.
: Re:Upload del file...
: rose9392 02 May 2015, 23:33:29
Non so se ti pu servire, ma anche io mi sono imbattuta in questo problema stasera....

sono arrivata a questa conclusione: ho il file default.php che contiene lo schema del form

:
<form method="post" name="vetrina_frm" enctype="multipart/form-data">
<fieldset>
                     <label for="name">Immagine 1</label>
     <input type="file" name="myfile" />
      <button type="submit">Submit</button>
</fieldset>


e il file che mi esegue il caricamento dell'allegato in una determinata cartella che posso impostare personalmente


:
function controllo($parametri){
                        jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');
print_r($_FILES);
$filename=$_FILES['myfile']['name'];
$fileTempPath=$_FILES['myfile']['tmp_name'];

$uploadPath=JPATH_SITE."\\media\\com_vetrina\\images\\".$filename.".jpg";
if(JFile::upload($fileTempPath, $uploadPath)){
//your logic like insert into database
echo "Upload success";
}else
{
echo "Upload faild";
}

Poi puoi gestirti come vuoi anche l'inserimento del path nel db, dato che il path è memorizzato in $uploadPath