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?
Azt írd le, hogy mit
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?
OK, azt szeretném, hogy ....
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.
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu
Én az ilyesmit nem a Batch
É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().
OK, meggyőző vagy
Már csak egy kérdés maradt: hogyan? :)
Erről tudnál kicsit többet irni, kérlek?
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu
Szerintem épp a lényeget nem
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
A lényeg, hogy a
http:///kepeslap_import/0001.jpg
stringed szépen álljon elő abszolút urlként.----
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.
Elnézést, de ...
... 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.
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu
De megnéztem. Meg a
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.----
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.
Jajj, jajj, jajj...
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!
---------------
Tátrai József
Drupler Kft.
http://www.drupler.hu