CCK kép mező feltöltése modulból

eFeS képe

Sziasztok,

Egy CCK kép mezőt szeretnék programból - modulból - feltölteni. Az adott node minden mezőjét le tudom generálni (ezek szöveges mezők...), csak ezt a kép mezőt nem. Egy szerver oldali könyvtárból venném ki a képeket, és a raknám be a Drupal által elérhető helyre (sites/default/files/uploads/kepeslapok).

Amit átnéztem már csomószor, és nem találtam benne hibát:
- útvonalak
- jogosultságok (webszerver futtató useré mind a forrás, mind a cél könyvtár, 755-ös joggal)
- file méret (engedélyezett 50M a CCK mezőben, a fileok tipikusan 150k-t foglalnak)
- filetipus neve (*.jpg)
- httpd-error.log

Ami pluszba rákerül a képekre, az már csak megjeleníés oldalon van, egy sima ImageCache preset, élesítés, átméretezés, majd Lightbox-ban jelenik meg klikk után a teljes kép. De a hiba akkor is előjön, ha ezt kikapcsolom.

Ezek vannak a kódban:

$elolap_imagefile = $elolap_url;
 
$field_elolap = content_fields('field_kepeslap_elolap','kepeslap');
 
$validators_elolap = array_merge(filefield_widget_upload_validators($field_elolap), 
imagefield_widget_upload_validators($field_elolap));
 
$files_path_elolap = filefield_widget_file_path($field_elolap);
 
$file_elolap = field_file_save_file($elolap_imagefile, $validators_elolap, $files_path_elolap, FILE_EXISTS_REPLACE);
 
$form_state['values']['field_kepeslap_elolap'][] = $file_elolap;
 
$form_state['values']['op'] = t('Save');

Felvitelkor ezt az üzenetet kapom:
warning: filesize() [function.filesize]: stat failed for http:///kepeslap_import/0001.jpg in //sites/all/modules/filefield/field_file.inc on line 156.
A kiválasztott 0001.jpg fájlt nem lehet menteni. A fájl nem egy ismert képformátum.

Ezzel nem tudok mit kezdeni. A PHP által engedélyezett fileméret 64MB, a file kiterjesztése ".jpg", ha lekérem parancssorból, akkor a file parancs közli velem, hogy "0001.jpg: JPEG image data, JFIF standard 1.01". Ha direktbe, a portál felületén viszem fel ugyanazt a képet, csont nélkül elmenti és használja, elkészül belőle a node.

Hol ronthatom el?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aries képe

Azt írd le, hogy mit szeretnél, ne azt, hogy hogyan nem sikerül. :) Az űrlapon szeretnéd, hogy előre megjelenjen, vagy be szeretnéd szúrni az adatbázisba?

0
0
eFeS képe

Adott egy CSV file, benne egy másik adatbázisból áthozott adatokkal, amik képeslapok jellemzőit tartalmazzák. Ezt akarom berántani Drupal alá úgy, hogy
- az egyes képeslap-csoportok taxonómiaként megjelenjenek
- az egyes képeslapok egy-egy "node"-ot alkossanak a "kepeslap" tipusból
- a képeslapok node mezői ki legyenek töltve
- a képeslap NAGY képéről (ami külön fileban van egy könyvtárban) készüljön el automatikusan egy kis kép

Ezek közül _minden_ létrejön jól, ha kiveszem a képekre vonatkozó részt. A képeknél meg a fenti hibát dobja.

És ha mindez megvan, akkor ezt az adathalmazt szeretném - helyesebben ez már megvan - Views-al, lightbox-al meg minden csicsával együtt megjeleniteni. De a ~3000 képeslap adatát kézzel nincs kedvem felvinni...

Igazából egy batch import lenne jó, de a Batch API-val még ismerkedem. Először manuálisan szerettem volna, meghiva a validator()-okat, meg minden szükséges dolgot, létrehozi a node-ot, tartson akármeddig, aztán majd megnézem a Batch API-t is.

0
0

---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu

aries képe

Én az ilyesmit nem a Batch API-val oldom meg, hanem CLI-ből, Drushsal. Ennek oka, hogy nagymennyiségű importálás során jelentős a memóriaszivárgás, amit a parancssoros változatnál ki lehet védeni. A form dolgait kihagynám, inkább közvetlenül hoznám létre a node objectet, kitölteném a változókat és mehet a node_submit(), node_validate(), node_save().

0
0
eFeS képe

Már csak egy kérdés maradt: hogyan? :)
Erről tudnál kicsit többet irni, kérlek?

0
0

---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu

szantog képe

Szerintem épp a lényeget nem szúrtad be a kódból, vagyis hogy az $elolap_url vajon hogyan áll elő. Gyanítom minimum egy file_directory_path() hiányzik, + egy $base_url

//nálad valami ilyesmi lehet: 
$elolap_url = '/kepeslap_import/' . $valamifilenevvaltozo
 
//ez biztos kell bele a perjelekkel nem kell bohóckodni, a drupal tudja ám, hová tegye:
global $base_url;
$elolap_imagefield = $base_url .  file_directory_path() . 'kepeslap_import/' . $valamifilenevvaltozo;

A lényeg, hogy a  http:///kepeslap_import/0001.jpg stringed szépen álljon elő abszolút urlként.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

eFeS képe

... az induló bejegyzést nem nézted. Az útvonalakkal nincs bajom. Való igaz, hogy a kérdéses URL nem egyszerűen áll elő, de a végeredmény az jó! Kiiratva, böngészőbe bemásolva, kapásból megnyílik a kép.

Volt az elején hiba ezzel is, de az más volt, egyértelmű volt, hogy nincs meg a file.

0
0

---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu

szantog képe

De megnéztem. Meg a hibaüzenetet is.
warning: filesize() [function.filesize]: stat failed for http:///kepeslap_import/0001.jpg in //sites/all/modules/filefield/field_file.inc on line 156.

Az az url nyilván nem véletlenül kerül úgy bele a hibaüzenetbe, ahogy belekerül. Szóval valami csak megeheti belőle a lényeget, mert ha egyszer az Úr stringet összerakta, azt filefield szét nem választja. Legalábbis értelme nincsen szerintem.

Szóval hacsak a filefieldnek feldolgozás közben nem érdeke valamiért kikapnia a $base_url-t és a files mappát úgy, hogy benne hagyja a http://-t és a mappád címét, akkor valahol mégis akörül kell lennie a gondnak.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

eFeS képe

Bocsánat...
Hiba van, de nem ott, amit írsz...szóval az elérési út továbbra is jó, csak kivettem belőle - mikor beirtam ide - az abszolút url-t. A Kérdéses //-ek között volt egy < és > köz zárt szöveg, de azt meg a kódértelmező vágta ki beküldéskor, és már csak akkor vettem észre, mikor véglegesítettem a fórum topic-ot.

Szóval: az URL-ek JÓK, de bénának béna vagyok..bocsánat!

0
0

---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu