2009-08-10 15 views
8

Drupal 6でファイルをアップロードするフォームでモジュールを書く方法がわかりません。誰かがこれを説明してくれますか、それとも議論している良い例を教えてくれますか?Howto:Drupal File Upload Form

編集:ここでは

は私がやろうとしていますどのような完全である:

  1. ユーザーは.CSV
  2. モジュールはフィールド
  3. を取得するために、ファイルの最初の行を読み取りアップロードユーザーはcsvフィールドとdbフィールドを一致させます
  4. 各CSVラインはノードとして保存されます(最初にプレビュー)

これまでのところ、1と2と4を正常に実行できます。しかし、ステップがお互いにどのように相互作用すべきかは明確には分かりません($ form_state ['redirect']?それはどのように使われるべきですか?)、ベストプラクティスは何ですか?そして、3のために、セッションデータとして保存する必要がありますか?

さまざまな手順でファイルデータを渡すにはどうすればよいですか?

私はnode_importが存在することは知っていますが、これは決してうまくいかず、私のバグ要求は無視されます。

第二編集:私は、ファイルを扱うために必要なすべてのページの開始時と終了時に、これを使用:

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

私はそれがベストプラクティスだが、それが働いていますかわかりません。

答えて

12

これはあまりにも難しくありません、あなたはいくつかの情報hereを見ることができます。ファイルアップロードのみのフォームの例。

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:

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); 
} 

第二EDIT:

を質問して行う方法がたくさんありますあなたが説明したこと。私はcsvファイルを扱う方法の実際のコードにはほとんど行きません。私がお勧めするのは、ファイルIDを使用してファイルを追跡することです。これにより、あなたはfidを取得し、それを使用して作業したいファイルをロードするためのURLを作ることができます。 フォームから次のステップに進むには、#redirectフォームプロパティを使用して、ユーザーを次のステップに導くことができます。そこから、実際にあなたが何をするか、あなたが何をする必要があるかによって決まります。

+0

ええ、私はそれを持っていることはありません。しかし、いったんファイルがアップロードされると、それをどのように保存し、将来の機能で使用するのですか?編集後に –

+0

:okと表示され、今ではページ上にファイルの値を表示したいと思っていましたか? –

+1

少し正確なことができますか?イメージ、ビデオ、またはtxtファイルをレンダリングするには、非常に異なるアプローチが必要です。 CCKのファイルフィールドではできないことは何をしようとしていますか? とにかく$ fileがファイルオブジェクトになりますので、何でもできます。 – googletorp