2010-11-20 37 views
3

Drupal 7 ve dosya yükleme ile ilgili sıkıntılarım var. çalışmıyorDrupal 7'de dosya formları nasıl yüklenir?

Kodum:

function test_form($form, &$form_state){ 

$form['#attributes'] = array('enctype' => "multipart/form-data"); 
$form['podcast'] = array(
    '#title' => 'Audio file', 
    '#type' => 'file', 
); 
$form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Save'), 
); 
return $form; 

} 

function test_form_submit($form, &$form_state){ 

$vals = $form_state['values']; 
$filepath = 'public://test/'; 
//$filepath = 'temporary://test/'; 
$filename = 'rcc_date.mp3'; 

file_prepare_directory($filepath, FILE_CREATE_DIRECTORY); 
$file = file_save_upload('podcast', array('file_validate_extensions' => array()), $filepath.$filename); 
//got FALSE here. Why? 
die(print_r($file===FALSE).'-'); 

} 

Yani yolu oluşturulur ancak dosya değil yüklenenler yapar ve file_save_upload YANLIŞ döndürür. Ayrıca, array() yöntemini denedim ve hiçbir etkisi olmadan $ validators olarak doğruydu.

Herhangi bir yardım büyük beğeni topladı. Teşekkürler.

+0

Dosya adı dinamik olarak nasıl alınır? – Hitesh

+0

Bu kodda dosya adı tamamen gereksizdir. Tamamen dışarıda bırak. $ Dosyaadı değişkeni ayarlamayın ve bunu $ dosya yoluna eklemeyin. – Magmatic

+0

Dizi ('file_validate_extensions' => array()) gibi boş bir dosya doğrulayıcı dizisi kullanmak için, güvensizdir ve kullanılmamalıdır. Bunun yerine, varsayılanı almak veya gerçek bir liste yapmak için NULL kullanın. Https://api.drupal.org/api/drupal/includes!file.inc/function/file_save_upload/7 adresindeki nota bakın. – Magmatic

cevap

4

Doh. $ hedef dosya adı içermemeli, sadece yol.

+0

$ hedefinin nerede olduğunu merak edenler için file_save_upload dosyasının üçüncü argümanıdır. Bu çizgi şu şekilde görünmelidir: $ file = file_save_upload ('podcast', dizi ('file_validate_extensions' => dizi()), $ dosya yolu); Ya da tercihen, bunun gibi: $ file = file_save_upload ('podcast', null, $ filepath); Bu çok daha güvenli. PHP dosyalarının yüklenmesine izin vermez, bu da büyük bir güvenlik riski oluşturur. Https://api.drupal.org/api/drupal/includes!file.inc/function/file_save_upload/7 adresine bakın. – Magmatic