Autor | Zpráva | ||
---|---|---|---|
residentcz Profil |
#1 · Zasláno: 30. 10. 2013, 09:03:38
Ahojte potřeboval bych poradit jak docílit vyrenderování html na obrázek
ukázková stránka je zde. http://www.goldoffice.cz/prezentacni-mistnosti-akcni-sety-email.php našel jsem js, ale nevím jak docílit toho aby to zůstalo uložrno na serveru jako file :-( http://jsfiddle.net/Sq7hg/42/ |
||
buchti Profil |
#2 · Zasláno: 30. 10. 2013, 09:05:26
php umí generovat obrázky, ale ne z html
|
||
residentcz Profil |
A jde to nějak vytáhout z toho js a následně uložit nějakým skriptem? :-(
|
||
Rfilip Profil |
#4 · Zasláno: 30. 10. 2013, 09:46:28
V tom js fiddle mas v komentari ze si mas AJAXem poslat na server promenou data,
tu na serveru zpracujes nasledujicim kodem: <?php $data= str_replace('data:image/png;base64,','' ,$data); $data = base64_decode($data); file_put_contents('img.png', $data); |
||
residentcz Profil |
Nechcou se mi zapsat data do img
http://www.goldoffice.cz/prezentacni-mistnosti-akcni-sety-email.php obrázek je prázdný :( http://www.goldoffice.cz/images/novinky/email-pm.png Nevíte kde mám chybu ?:) PHP kód vypadá takto <?php $data= str_replace('data:image/png;base64,','' ,$data); $data = base64_decode($data); file_put_contents('/usr/local/hosting/home/goldoffice.cz/web/www/images/novinky/emal-pm.png', $data); ?> Tak už to chápu kde je problém jen netuším jak to tím ajaxem dostat do proměnne pro PHP script |
||
Rfilip Profil |
Místo toho komentáře na 38 řádku si dejte tento kod
ajax = !window.XMLHttpRequest ? !window.ActiveXObject ? null : new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); ajax.open("POST","url",true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){ if(ajax.readyState==4 && ajax.status==200){ document.getElementById(status).innerHTML = ajax.responseText; } } ajax.send("data=" + data); <p id="status"></p> , v něm se bude zobrazovat status uložení obrázku
Místo url si dejte adresu následujícího scriptu: <?php if(isset($_POST["data"])) { $data= str_replace('data:image/png;base64,','' ,$_POST["data"]); $data = base64_decode($data); $result =file_put_contents('/usr/local/hosting/home/goldoffice.cz/web/www/images/novinky/emal-pm.png', $data); if ($result === false){ echo "Nepodařilo se uložit obrázek"; } else { echo "Obrázek uložen"; } } else { echo "Nebyly poslány data"; } |
||
residentcz Profil |
#7 · Zasláno: 30. 10. 2013, 15:43:51
Díky moc za ochotu :)) ale pořád to nefunguje
http://www.goldoffice.cz/prezentacni-mistnosti-akcni-sety-email.php dokonce přestal fungovat ten js někde tam musí být chyba v tom ajaxu :( , ale já tam nic nevidím... |
||
Rfilip Profil |
Omlouvám se, překlep na 51 řádku, ten má být:
ajax.send("data=" + data);
a ješte na 52 řádku document.getElementById("status").innerHTML = ajax.responseText;
|
||
residentcz Profil |
#9 · Zasláno: 30. 10. 2013, 16:18:00 · Upravil/a: residentcz
super už to asi funguje jen je ještě problém někde v kodovaní nebo v něčem takovém, protože se nezobrazí obrázek, ale data se zapíší do souboru...
http://www.goldoffice.cz/images/novinky/email-pm.png |
||
Rfilip Profil |
#10 · Zasláno: 30. 10. 2013, 16:57:46
Problém nalezen, mezery se v řetězci před dekodováním musí nahradit +
<?php if(isset($_POST["data"])) { $data= str_replace('data:image/png;base64,','' ,$_POST["data"]); $data = str_replace(' ','+',$data); $data = base64_decode($data); $result =file_put_contents('/usr/local/hosting/home/goldoffice.cz/web/www/images/novinky/emal-pm.png', $data); if ($result === false){ echo "Nepodařilo se uložit obrázek"; } else { echo "Obrázek uložen"; } } else { echo "Nebyly poslány data"; } |
||
Radek9 Profil |
Rfilip:
„ ajax.send("data=" + data); “
To spíš ajax.send("data=" + encodeURIComponent(data)); a můžeš z PHP odstranit ten čtvrtý řádek.
„Nebyly poslány data“ Češtinářský koutek. Podle jakého vzoru se skolňují data? :-) |
||
residentcz Profil |
#12 · Zasláno: 31. 10. 2013, 08:37:12
Joooo dík jste fakt nejlepší :-) díky moc bez Vás bych tohle propojení nikdy nezvládl.
|
||
Časová prodleva: 10 let
|
0