2009-08-10 4 views
8

Ich habe Schwierigkeiten herauszufinden, wie man ein Modul mit einem Formular schreibt, das Dateien hochlädt, in Drupal 6. Kann mir jemand das erklären oder auf ein gutes Beispiel/Dokumentation verweisen?Howto: Drupal File Upload Formular

EDIT:

Hier ist ganz was ich zu tun versucht:

  1. Börse eine CSV-
  2. Modul die erste Zeile der Datei liest Felder zu erhalten
  3. Benutzer stimmt mit csv-Feldern mit db-Feldern überein
  4. Jede CSV-Zeile wird als Knoten gespeichert (Vorschau zuerst)

Bisher kann ich 1, 2 und 4 erfolgreich machen. Aber es ist nicht klar, wie genau die Schritte miteinander interagieren sollten ($ form_state ['redirect']? Wie sollte das verwendet werden?) Und was die besten Praktiken sind. Und für 3, sollte ich das als Sitzungsdaten speichern?

Wie übermittele ich die Dateidaten zwischen den verschiedenen Schritten?

Ich weiß, dass node_import existiert, aber es hat nie für mich funktioniert, und meine Bug-Anfragen werden ignoriert.

2. EDIT: habe ich dies zu Beginn und am Ende jeder Seite, die mit der Datei zu behandeln benötigt:

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

Ich bin nicht sicher, dass es es die Best Practices, aber es wird daran gearbeitet.

Antwort

12

Dies ist nicht zu schwierig, können Sie einige Informationen here sehen. Ein Beispiel für ein Formular mit nur einem Dateiupload.

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:

Nun ist die Datei verwenden, um die file_save_upload Funktion zu speichern:

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

2. EDIT:

eine Menge Fragen und Möglichkeiten gibt es zu tun die Dinge, die du beschrieben hast. Ich werde nicht viel in den eigentlichen Code, wie mit einer CSV-Datei umzugehen. Ich würde vorschlagen, dass Sie die Datei-ID verwenden, um die Datei zu verfolgen. Das würde es dir ermöglichen, URLs zu erstellen, die eine FID nehmen und diese benutzen, um die Datei zu laden, an der du arbeiten willst. Um von Ihrem Formular zum nächsten Schritt zu gelangen, können Sie die Formulareigenschaft #redirect verwenden, um Ihre Benutzer zum nächsten Schritt zu bringen. Von dort hängt es wirklich ab, wie Sie Dinge tun, was Sie tun müssen.

+0

ja, ich habe damit keine Schwierigkeiten. Sobald Sie die Datei hochgeladen haben, wie speichern Sie sie und verwenden Sie sie für zukünftige Funktionen? –

+0

nach der Bearbeitung: ok, und jetzt, wenn ich sagen wollte, zeigen Sie die Werte der Datei auf der Seite an? –

+1

Können Sie ein bisschen genauer sein. Das Rendern einer Bild-, Video- oder TXT-Datei erfordert sehr unterschiedliche Ansätze. Was versuchst du zu tun, das ist mit dem CCK-Dateifeld nicht möglich? Anyways $ Datei wird das Dateiobjekt sein, also sollten Sie in der Lage sein zu tun, was Sie wollen. – googletorp