Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 8. 9. 2005, 18:22:49
Zdravím. Mám jeden skript ktorým do obrázkov vpisujem dáke texty a chcem potom tieto obrázky zobraziť v browseri aby si ich ľudia mohli stiahnuť ak chcú. CHcem sa spýtať či existuje nejaký pracovný "tmp" adresár kde by som ich uložil a z kade sa po prepnutí stránky tie obrázky vymažú. Teda či neexistuje nejaka premenná s adresou toho adresára. Napr. viem že existuje direktíva alebo čo s názvom upload_tmp_dir ale ono to vlastne ani nie je premenná takže ten adresár neviem v skripte použiť.
|
||
Kalda Profil * |
#2 · Zasláno: 8. 9. 2005, 20:08:10
Já nevím, jak to máte řešené, ale pokud jsem to pochopil, jedná se Vám obrázek, který má být prohlédnut pouze jednorázově.
Toto řešení, které chci navrhnout, může být zbytečně velmi náročné na výkon počítače, ale proč dělat dočasný obrázek? Nemohl byste odkazovat <img src="obrazek.php?parametry" ... >? Pak by se podle parametru vytvoril patricny obrazek, který by se neukládal nikde na disku. Druhou variantou je vytvoření adresáře, který by byl trvalý a kam byste nahrával obrázky. Tento mechanismus by pak byl doplněn o automatické mazání obrázků, které jsou starší než zadaný čas. |
||
mila Profil |
#3 · Zasláno: 8. 9. 2005, 20:13:22
Asi bude nejjednodušší, když místo na obrázek budeš odkazovat na php skript, který ho vytvoří a s patřičnýma hlavičkama pošle zpět..
|
||
mila Profil |
#4 · Zasláno: 8. 9. 2005, 20:18:19
pozdě...
|
||
Question Profil * |
#5 · Zasláno: 9. 9. 2005, 00:07:41
Spravím to asi tak ako mila. Pôvodne som si myslel, že potrebujem vytvoriť obrázok (súbor) preto, že do stránky chcem okrem obrázku ešte vypisovať dáke texty ale v podstate potrebujem na stránke zobraziť len ten obrázok. To sa potom dá cez tú úpravu headeru.
|
||
Question Profil * |
#6 · Zasláno: 10. 9. 2005, 13:02:49
mila
(predsa len potrebujem zobraziť obrázok ešte aj s nejakým dodatočným html kódom takže...) neviem či som ťa dobre pochopil... je to vlastne prvé riešenie Kaldy?? tu je skript ktorý mám: (skript.php) $im = imagecreatefromjpeg($obrazok); Skript je volaný z rovnakého súboru, kde sú odkazy na obrázky v tvare "skript.php?obrazok=xxx" ($obrazok je potom $_GET["obrazok"]). Skript.php funguje tak, že bez "?id=" sa spúšťa tabuľka s odkazmi na obrázky a ak je nejake "?id=" tak sa spracuje iná časť súboru skript.php (odkaz smeruje na nové okno) v ktorej je aj hore spomenutý kód. Problém je teda ten posledný riadok. Bez dodatočného html kódu by som ho zobrazil jednoducho tak, že na začiatok dám header("content-type: image/jpeg") a šlo by to. Lenže ja k tomu obrázku potrebujem dať border="1" (čierny rámček), vycentrovať ho a dať mi alt a title. No a jediné čo ma napadá je k tomu imagejpeg pridať parameter "temp.jpg". Tým predídem síce vytváraniu množstva obrázkov (súborov) ale ja potrebujem aj to, aby sa pri stiahnutí obrázku neponúkalo uložiť obrázok ako "temp.jpg". Takže ako je to myslené s tým, že sa obrázok vytvorí v skripte a pošle sa s patričnými hlavičkami?? Akou hlavičkou?? |
||
krteczek Profil |
#7 · Zasláno: 10. 9. 2005, 13:25:49 · Upravil/a: krteczek
no podle mne by mely stačit parametry v css protože ten obrázek voláš z jednoho souboru, kde je html:
<img url="obrazek.php" > a v souboru obrazek.php budeš mít kromě jiného i Header("Content-Type: Image/png") image/jpg nebo image/gif to podle typu obrázku takže na do css jen napíšeš: img{border:2px solid black/*černý rámeček} takže máš vyřešeno i ten html kod :-) jestli to špatně chápu tak se omlouvám... krteczek |
||
Question Profil * |
#8 · Zasláno: 10. 9. 2005, 13:39:00
krteczek
podľa tvojho návrhu by ale všetky obrázky na mojom webe mali čierny rámček ale ja to potrebujem len pre niektoré obrázky... |
||
Question Profil * |
#9 · Zasláno: 10. 9. 2005, 13:51:19
krteczek
jáj vlastne som pre zmenu ja teba zle pochopil :)) je to trochu zložitejšie (možno zbytočne ale...). Súbor skript.php je "normálny" súbor ktorý pomocou include vložím do stránky. Takto vkladám všetky súbory na webe do stránky. Inak sa to správa vtedy keď kliknem na nejaký odkaz v súbore skript.php, ktorý otvorí ten istý skript ale v novom okne ale podľa "?id=" sa spracuváva iná časť súboru skript.php (takže navonok to vyzerá ako keby sa spúšťal iný súbor). Mám takú predstavu, že v tejto časti kódu bude stránka v rátame <doctype> <html> <head> atď a že sa tu bude zobrazovať ten vygenerovaný obrázok vycentrovaný a zarámovaný. Lenže problém je taký že obrázok môžem vygenerovať do novej stránky buď priamo cez imagejpeg($im) ale vtedy nemôžem použiť žiadne html tagy. Alebo použijem parameter imagejpeg($im, názov). Vtedy ak bude každý názov jedinečný (podľa názvu obrázku), tak sa mi vygeneruje dupľovane veľa obrázkov. Ak bude mať konštantný názov (napr. temp.jpg) tak sa pri ukladaní ponúkne vložiť pri každom obrázku temp.jpg čo tiež nechcem. Riešením by bolo každý vygenerovaný obrázok neukladať na disk (lepší prípad) alebo neskôr automaticky vymazať... ale ako?? |
||
llook Profil |
#10 · Zasláno: 10. 9. 2005, 13:56:34
Při generování tý tabulky se nedá nějak určit, jaký má mít obrázek alt a border?
|
||
krteczek Profil |
#11 · Zasláno: 10. 9. 2005, 14:00:28
no donrá a co kdybe si měl náhled klasicky (zmenšenina) a kliknutím na něj by se otevřela nová stránka kde by bylo celé html a v nem to <img url="obrazek.php" > s tim že tam by se pokažde generoval nový obrázek a neukládal se ( základ obrázku bys měl někde uložen, nevím co to sou za obrázky ) přitom těch obrázků muže být hodně... ale opravdu v tomhle nedělám, jen se snažím dedukovat co by mohlo jít
|
||
mila Profil |
#12 · Zasláno: 10. 9. 2005, 14:16:41
Možná to špatně chápu. Řekněme, že chceš udělat nějakou galerii, kde jsou obrázky. Kliknutím na obrázek se zobrazí vybraný obrázek s textem přes sebe.
Galerie:
Skript view.php
A pak soubor make.php, ktery si dle id najde pozadovany obrazek, upravi ho, a posle ho s hlavickami zpet. To view.php tam být nemusí, pokud budeš odkazovat rovnou na make.php. Ber skript make.php jako normální obrázek - můžeš udělat odkaz na obrázek nebo na stránku, na které ten obrázek je. |
||
Question Profil * |
#13 · Zasláno: 10. 9. 2005, 15:12:07
Aha.. Takto to funguje. Obrázok sa zobrazí v poriadku, je to všetko oštýlované, len jeden problémik. Keď chcem takýto obrázok uložiť, tak IE vypisuje názov súboru ako Bez názvu a typ .bmp. To je vlastne aj logické lebo ten obrázok nie je v žiadnom súbore. Nedá sa nejako prehliadaču nanútiť (napr. cez header) že obrázok sa má volať napr "baza čierna.jpg" ??? (A inak do title som chcel vypísať veľkosť súboru ale som si uvedomil, že sa to asi nedá lebo ten vygenerovaný obrázok prakticky neexistuje ako súbor)
|
||
llook Profil |
#14 · Zasláno: 11. 9. 2005, 02:24:42 · Upravil/a: llook
Mohl bys mít u obrázku odkaz na stažení - ten by vedl na skript který by poslal takovýhle hlavičky a pak vygeneroval znovu ten obrázek:
header('Content-type: image/jpeg'); header('Content-disposition: attachment; filename=obrazek.jpg'); To by mělo mít za následek dialog "Stáhnout/otevřít" a při ukládání by prohlížeč měl ten soubor brát jako "obrazek.jpg". Měl bych ještě jeden nápad, pouze pro Apache (pokudvím) - nahradit tohle: echo '<img src="make.php?id='.$_GET[id].'" style="....">'; tímhle: echo '<img src="make.php/'.$_GET[id].'.jpg" style="....">'; A potom v tom skriptu make.php získávat to ID z proměnné PATH_INFO:
|
||
printf_jinde Profil * |
#15 · Zasláno: 11. 9. 2005, 10:34:20
llook
myslím že by to stejně potřebovalo ještě nějakou úpravu jako mod rewrite nebo něco v konfiguraci, protože na mém prehistorickém apachi tohle samotné nefunguje (apache se snaží najít adresář make.php a stejnojmeného souboru si nevšímá). Zato to však spolehlivě funguje když je místo lomítka otazník (akorát tam nemusí být to id= ale rovnou číslo) echo '<img src="make.php?'.$_GET[id].'.jpg" style="....">'; Ale třeba máte jinéí zkušenosti... Question Jinak ten dočasný adresář by IMHO neměl moc význam, protože než by se k němu uživatel mohl dostat, skript by už skončil a obrázky by byly smazané. Generování obrázku přímo jako výstup z php jak tady navrhujete se mi zdá nejlepší. Navíc se tím dá pro případ potřeby dobře sledovat kolik kterých obrázků si lidé prohlížejí/stahují. |
||
llook Profil |
#16 · Zasláno: 11. 9. 2005, 15:12:12
Co máš za verzi? 1.3 i 2.0 CGI proměnnou (teda to co najdeš v $_SERVER) PATH_INFO nastavují. Například na WZ i na PHP5.cz to funguje.
Teď jsem zjistil, že to ani není Apache-only vlastnost (CGI Environment Variables), takže to možná bude dostupné i u jiných serverů. |
||
printf_jinde Profil * |
#17 · Zasláno: 11. 9. 2005, 18:38:58
Apache 1.3.14
nejde o to že by nebylo PATH_INFO ale že vůbec nejde k provedení skriptu, protože defaultně nazev.php/xxx bere jako adresář a nehledá skript nazev.php |
||
llook Profil |
#18 · Zasláno: 11. 9. 2005, 21:47:49
Jsem si skoro jistý, že jsem to na 1.3.x používal. I když ne na Windows, v tom by mohl být problém. Ale v manuálu k apachi 1.3 jsem o tom nic nenašel.
Teď ale koukám, že jak wz, tak php5.cz i localhost jedou na 2.0, tak nevím. |
||
mila Profil |
#19 · Zasláno: 12. 9. 2005, 14:00:27
Aha.. Takto to funguje. Obrázok sa zobrazí v poriadku, je to všetko oštýlované, len jeden problémik. Keď chcem takýto obrázok uložiť, tak IE vypisuje názov súboru ako Bez názvu a typ .bmp. To je vlastne aj logické lebo ten obrázok nie je v žiadnom súbore. Nedá sa nejako prehliadaču nanútiť (napr. cez header) že obrázok sa má volať napr "baza čierna.jpg" ??? (A inak do title som chcel vypísať veľkosť súboru ale som si uvedomil, že sa to asi nedá lebo ten vygenerovaný obrázok prakticky neexistuje ako súbor)
Nejednodušší bude asi mod rewrite - budeš odkazovat na obrazek.jpg, apache to presmeruje na obrazek.php, ale IE nic nepozná. Nejsem si jist, jak si prohlížeč poradí s ?id=... u obrázku, ale neměl by být problém udělat adresu jako obrazek132.jpg |
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0