Sziasztok!
Nekiálltam írni egy saját node modult (elektronikai termékeknek műszaki leírása). Az adatok mellé kéne egy kép is a termékről, ennek a feltöltését a következő képpen próbáltam:
Drupal-CVS
function dinrelay_form(&$node) { $output = ''; if (function_exists('taxonomy_node_form')) { $output .= implode('', taxonomy_node_form('dinrelay', $node)); } $output .= form_textfield(t('Type'), 'typeString', $node->typeString, 5, 5); $output .= form_file(t('Image'), 'image', $node->image, 40, 40); $output .= form_textfield(t('Manual URL'), 'manualUrl', $node->manualUrl, 10, 15); /* ... */ return $output; } function dinrelay_validate(&$node) { $field_name = 'image'; if ($file = file_check_upload($node->image)) { $file = file_save_upload($field_name, 'files/' . $node->image, TRUE); } }
A validate függvényben lévő részt az upload és image modulokól lestem, de ott pl a validate fv-nek van még egy paramétere, ami nincs benne a doksiban: image_validate(&$node, $field_name)
Elvileg ugyebár a file_save_upload
-nak a $field_name értéke alapján meg kéne találni az image nevű form_file
-t, de hibát kapok eredményül.
Kell még ezen kívül mást is csinálni (mondjuk elindítani a feltöltést) vagy ezt a böngésző/form_file
megcsinálja? Ha igen keletkezik valami ideiglenes fájl, ahova bepakolja? Nekem eddig úgy tűnik, hogy a szerverre nem töltődik föl a fájl.
Előre is köszi a segítséget!
pentike
enctype = multipart/form-data
Megoldás:
A
<form>
tag paraméterei között szerepelni kell, hogyenctype = 'multipart/form-data'
mert egyébként nem tölti föl a böngésző a fájlokat a szerverre.Ezt úgy lehet elérni, hogy csinálunk egy saját
sjátmodulneve_nodeapi()
kampót valahogy így:(a példa az upload.modul-ból van)