Inserire in una hook form l'upload di un file

7 contenuti / 0 new
Ultimo contenuto
Inserire in una hook form l'upload di un file

Ciao a tutti,

sapete consigliarmi gli strumenti migliori per aggiungere in una form (custom) l'upload di un file? Sto sviluppando sulla 6.19.

Nella mia form ho utilizzato questi due approcci:

1) ho scaricato il modulo upload_element e funziona fintanto che si tratta di salvare sulla temp il file appena browsato, dopo di chè boh....;

$form['file_upload'] = array(
'#type' => 'upload_element',
'#title' => 'Upload',
'#file_validators' => array(
'file_validate_extensions' => array('zip gzip tar gz tar.gz'),),
)

2) ho utilizzato Filefield di CCK (che a mio avviso sembra quello più affidabile), ma non riesco a farlo funzionare in quanto mi restituisce i seguenti errori:
warning: implode(): Invalid arguments passed in /var/www/drupal/sites/all/modules/filefield/filefield_widget.inc on line 424.

il mio field è:

$form['file_upload'] = array(
'#type' => 'filefield_widget',
'#title' => 'Attachment',
'#default_value' => array(
'fid' => 0,
'list' => 1,),
/*
'data' => array(
'description' => array('Upload file',),
)),
*/
'#field_name' => 'file_upload',
'#upload_validators' => array(),
);

Qual è il problema????? ;PPP

Grazie mille.

Ciao,
sei sicuro che il type del field sia upload_element?
Sulla reference dei form mettono file come field type!

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference....
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference....

;)

Grazie mille Gioppy,

Il type 'upload_element' è uno dei type che viene ereditato scaricando il modulo upload_element e che si va ad aggiungere a quelli già presenti nelle api (a tal proposito questo link http://groups.drupal.org/node/20291).

Cmq il mio problema è che vorrei trovare un modo veloce e performante per poter uploadare file (tipo zip, gz, etc.) e volevo capire se la strada che stavo perseguendo era quella giusta ed inoltre sapere come ovviare al warning sopra postato.

Ok, non avevo considerato i moduli esterni...
Da quello che so, anche se non ho mai lavorato con gli upload diretti, c'è una funzioni apposita per il salvataggio dei files da richiamare nella funzione submit submit per fare in modo che l'upload salvato in temp sia trasferito in files...
Prova, in alternativa, a vedere che fa il salvataggio in moduli tipo filefield... non dovrebbe essere troppo complicato!
;)

Ok grazie mille Gioppy,

per quanto concerne upload_element stavo per provare con la funzione file_save_upload().
Invece su filefield il problema è che come descritto nel primo post non riesco a trovare il modo per ovviare al warning ed eventualmente a capire se nello snippet di codice postato c'è qcs di errato (oppure ???).

;))))
Thank U.

Ciao, di seguito ti incollo il codice di un mio modulo, spero possa esserti d'aiuto (x DRUPAL 6)

ALL'INTERNO DI UN FORM

$form['#attributes']['enctype'] = 'multipart/form-data';
  $form['file_upload'] = array(
    '#title' => t('Documento (.pdf o .txt)'),
    '#type'  => 'file',
    '#weight' => 6 ,
  );

VALIDATE

  if(strlen($_FILES['files']['name']['file_upload']) > 0)
  {
    if($file = file_save_upload('file_upload',array(),file_directory_path()))
    {
      file_set_status($file,FILE_STATUS_TEMPORARY);
      /*ALTRE VALIDAZIONI AD ESEMPIO SULL'ESTENSIONE ETC ETC*/
    }
    else
    {
      form_set_error('file_upload',"Errore caricamento file");
    }
  }
  else
  {
    form_set_error('file_upload',"Nessun file da caricare");
  }

SUBMIT

  if ($file = file_save_upload('file_upload',array(),file_directory_path()))
  {
    watchdog('Submit Articoli',print_r($file,true),array(),WATCHDOG_NOTICE);
  }

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte

@emanuele_80
Ciao, sei riuscito a trovare il codice per il caricamento file?

$form['file_upload'] = array(
'#title' => 'Attachment',
'#type' => 'filefield_widget',
);

@gioppy
e tu?

Grazie per la risposta!