2009-08-10 21 views
8

Drupal 6'da dosya yükleyen bir form içeren bir modülün nasıl yazılacağını bulmakta zorluk çekiyorum. Bunu açıklayabilir mi, yoksa iyi bir örnek/belgeyi tartışıyor mu?Howto: Drupal Dosya Yükleme Formu

DÜZENLEME: İşte

Yapmak ne çalışıyorum tamamen:

  1. Kullanıcı bir .csv
  2. Modül dosyasının ilk satırı alanları almak için okur yükler
  3. Kullanıcı db alanları ile csv alanları eşleşir
  4. Her csv satırı bir düğüm olarak kaydedilir (önce önizle)

Şimdiye kadar 1, 2 ve 4 başarıyla yapabilirim. Ancak, adımların birbirleriyle nasıl etkileşimde olması gerektiği açık değildir ($ form_state ['yönlendirme']? Nasıl kullanılmalıdır?) Ve en iyi uygulamaların neler olduğu. Ve 3 için, bunu oturum verileri olarak kaydetmeliyim?

Dosya verilerini çeşitli adımlar arasında nasıl iletirim?

Bu node_import'un var olduğunu biliyorum, ancak hiçbir zaman benim için çalışmadı ve hata isteklerim yoksayıldı.

2 DÜZENLEME: Ben öyle iyi uygulamalar emin değilim

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

ama çalışıyormuş: Ben dosya ile başa çıkmak için gerekli başlangıç ​​ve her sayfanın sonunda kullandı.

cevap

12

Bu çok zor değil, bazı bilgileri görebilirsiniz here. Yalnızca bir dosya yükleme ile bir form örneği.

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

DÜZENLEME:

Şimdi dosya file_save_upload işlevi kullanmak kaydetmek için:

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

2 DÜZENLEME: sorular ve yapılacak pek çok yolu var

tarif ettiğin şeyler. Bir csv dosyasının nasıl işleneceğine ilişkin gerçek koda fazla gitmeyeceğim. Öneririm, dosyayı takip etmek için dosya kimliğini kullanmanızdır. Bu, işe yarayan dosyayı yüklemek için bir ipucu alıp kullanacak URL'ler oluşturmanızı sağlar. Formunuzdan sonraki adıma geçmek için, kullanıcılarınızı bir sonraki adıma almak için #redirect form özelliğini kullanabilirsiniz. Oradan gerçekten ne yaptığınızı, ne yapmanız gerekeceğini bağlı.

+0

Evet, bununla hiç zorluk çekmiyorum. Ancak, dosya yüklendikten sonra, onu nasıl kaydeder ve gelecekteki işlevlerde kullanırsınız? –

+0

düzenlemeden sonra: tamam, ve şimdi, dosyadaki değerlerin sayfada görüntülenmesini istedim mi? –

+1

Biraz daha hassas olabilir misiniz? Bir resim, video veya txt dosyası oluşturmak çok farklı yaklaşımlar gerektirir. Ne yapmaya çalışıyorsun, bu CCK'nın dosya alanı ile yapılamaz? Neyse $ dosya dosya nesnesi olacak, böylece ne istersen yapabilmelisin. – googletorp