2009-08-10 11 views
8

J'ai des difficultés à trouver comment écrire un module avec un formulaire qui télécharge des fichiers, dans Drupal 6. Quelqu'un peut-il m'expliquer cela ou me donner un bon exemple/documentation pour en discuter?Howto: Formulaire de téléchargement de fichier Drupal

EDIT:

Voici tout ce que je suis en train de faire:

  1. utilisateur télécharge un fichier .csv
  2. module lit la première ligne du fichier pour obtenir des champs
  3. L'utilisateur fait correspondre les champs csv avec les champs db
  4. Chaque ligne csv est enregistrée en tant que nœud (prévisualisez-le en premier)

Jusqu'ici, je peux faire 1, 2 et 4 avec succès. Mais on ne sait pas exactement comment les étapes devraient interagir les unes avec les autres ($ form_state ['redirect']? Comment cela devrait-il être utilisé?), Et quelles sont les meilleures pratiques. Et pour 3, devrais-je enregistrer cela en tant que données de session?

Comment transmettre les données de fichier entre les différentes étapes?

Je sais que node_import existe, mais cela n'a jamais fonctionné pour moi, et mes demandes de bogues sont ignorées.

2 EDIT: J'ai utilisé ce au début et à la fin de chaque page que nécessaire pour traiter le dossier:

$file = unserialize($_SESSION['file']); 
//alter $file object 
$_SESSION['file'] = serialize(file); 

Je ne suis pas sûr que ce que c'est les meilleures pratiques, mais il a travaillé.

Répondre

12

Ce n'est pas trop difficile, vous pouvez voir quelques informations here. Un exemple de formulaire avec seulement un téléchargement de fichier.

function myform_form($form_state) { 
    $form = array('#attributes' => array('enctype' => 'multipart/form-data')); 
    $form['file'] = array(
     '#type' => 'file', 
     '#title' => t('Upload video'), 
     '#size' => 48, 
     '#description' => t('Pick a video file to upload.'), 
    ); 
    return $form; 
} 

EDIT:

Maintenant, pour enregistrer le fichier, utilisez la fonction file_save_upload:

function myform_form_submit($form, $form_state) { 
    $validators = array(); 
    $file = file_save_upload('file', $validators, 'path'); 
    file_set_status($file, FILE_STATUS_PERMANENT); 
} 

2ème EDIT:

Il y a beaucoup de questions et de façons de le faire les choses que vous avez décrites. Je ne vais pas beaucoup dans le code réel de la façon de gérer un fichier CSV. Ce que je suggère, c'est que vous utilisez l'identifiant du fichier pour garder une trace du fichier. Cela vous permettrait de créer des urls qui prennent un fid et de l'utiliser pour charger le fichier sur lequel vous voulez travailler. Pour passer de votre formulaire à l'étape suivante, vous pouvez utiliser la propriété de formulaire #redirect pour que vos utilisateurs passent à l'étape suivante. De là dépend vraiment comment vous faites les choses, ce que vous devrez faire.

+0

ouais, je n'ai avec ça aucune difficulté. Cependant, une fois le fichier téléchargé, comment l'enregistrez-vous et l'utilisez-vous dans les futures fonctions? –

+0

après l'édition: ok, et maintenant si je voulais, disons, afficher les valeurs du fichier sur la page? –

+1

Pouvez-vous être un peu plus précis. Le rendu d'une image, d'une vidéo ou d'un fichier txt nécessitera des approches très différentes. Qu'est-ce que vous essayez de faire, cela ne peut pas être fait avec le champ de fichier de CCK? Anyways $ file sera l'objet fichier, donc vous devriez être capable de faire ce que vous voulez. – googletorp

Questions connexes