importazione da un file csv - allegati

4 contenuti / 0 new
Ultimo contenuto
importazione da un file csv - allegati

Bene, vi pongo una domandina, mi bastano poche dritte o idee o se avete visto moduli che fanno cio cosi lo smonto..naturalmente in drupal 7

Debbo importare dentro drupal un file CSV.

Il file CSV viene generato da un particolare applicativo per esportare
tutte le determine fatte dal mio ente.

Con questi dati genero un nodo e fino qui e' facile.

Nel csv e' presente la lista degli allegati da 1 a infiniti che successivamente
dovro' allegare al nodo, ecco, e' qui il difficile.

Sapete quel e' la funzione o l'hook o un metodo per caricarli.

Ho tracciato la struttura e usa una tabella per collegarlo al nodo tabella XXXX_file_usage e una per XXXX_file_managed ove
descrive la struttura del file che vengono caricati.

Potrei fare anche tutto a mano, ma preferirei adoperare funzioni esistenti.

Se avete un ideaa .. bussate per favore.

Ps ho trovato questo....

http://api.drupal.org/api/drupal/includes!file.inc/function/file_save/7

Puo essere la strada giusta ??? se si sapete anche come si utilizza ... ?? ;)

Grazie maxx

Drupal Version:

Ciao, io sotto D6 uso un codice simile a

<?php
//$fields è un array con i dati del file.
 
mkdir($_SERVER[''DOCUMENT_ROOT'']."/".file_directory_path()."/imagecache/fotogallery_indice/fotogallery/".$node->uid);
                               
$_fn = file_create_filename($fields[5].".jpg",$_SERVER[''DOCUMENT_ROOT'']."/".file_
directory_path
()."/fotogallery/".$node->uid);                               
                               
$fn = fopen($_fn,"wb");
                               
fwrite($fn,$fr);
                               
//$fr contiene il file da salvare, formato binario
                               
fclose ($fn);
                               
//Salvo il file
                               
$file = new stdClass();
                               
$file->uid = $node->uid;
                               
$file->filename = $fields[5].".jpg";
                               
$file->filepath = file_directory_path()."/fotogallery/".$node->uid."/".$file->fil
ename
;
                               
$file->filemime = file_get_mimetype($file->filename);
                               
$file->filesize = filesize($_SERVER[''DOCUMENT_ROOT'']."/".$file->filepath);
                               
$file->status = FILE_STATUS_PERMANENT;
                               
//$file->filesize = filesize($file->filepath);
                               
$file->timestamp = time();
                               
drupal_write_record(''files'',$file);
                               
//var_dump($file);
                                /*$other = array(
                                        ''description'' => $old[$didascalia],
                                        ''alt'' => $old[$didascalia],
                                        ''title'' => ''''
                                );
                                $other = serialize($other);
                                */
                                
$node->field_fotogallery_images[$i][''fid''] = $file->fid;
                               
$node->field_fotogallery_images[$i][''data''] = array(
                                       
''description'' => html_entity_decode ( $fields[4], ENT_QUOTES, ''UTF-8'' ),
                                       
''alt'' => html_entity_decode ( $fields[4], ENT_QUOTES, ''UTF-8'' ),
                                       
''title'' => html_entity_decode ( $fields[3], ENT_QUOTES, ''UTF-8'' ),
                                );
?>

Magari è un punto di partenza.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Mitico zio budda ...

Grazie l'idea e' proprio questa .

sto provando con
file_unmanaged_move($file_path, $percorso_e."lista_moduli_6.pdf", $replace = FILE_EXISTS_ERROR);

ma fatto cosi non funzia vuole solo cartelle percio non mi rinomina il file coem vorro io.
file_unmanaged_move($file_path, $percorso_e, $replace = FILE_EXISTS_ERROR);
cosi esegue lo spostamento da un posto all'altro.

se no avevo pensato a questo
// predispone la direcory ricorsiva
file_prepare_directory($percorso_e, $options = FILE_CREATE_DIRECTORY);

// questo esegue il move del file
file_move($file, $percorso_e."lista_moduli_5.pdf", $replace = FILE_EXISTS_ERROR);

ma debbo fare altre prove c'e' qualcosa che mi sfugge ..

grazie Maxx

Questa è la mia versione D7 che funziona

$imgs è un array di oggetti contenenti i dati della immagine tra cui "picfile" che è il nome del file.

                if (!empty($imgs)) {
                        $path = file_default_scheme() . '://images/'.$user->uid."/";
foreach ($imgs as $imgOLD) {
$file_temp = file_get_contents(SITO_WEB_O_DIRECTORY_DI_PARTENZA.$imgOLD->picfile);
$ft = file_save_data($file_temp,$path.$imgOLD->picfile,FILE_EXISTS_RENAME);
$node->field_all_images[LANGUAGE_NONE][] = (array)$ft;
}
}
node_save($node);

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal