Autor Zpráva
residentcz
Profil
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
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
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);
ulozi obrazek z $data (v ni bude obsah promenne data z js) do obrazku img.png
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);
Na 55 řádek si dejte:
<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
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
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
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
Joooo dík jste fakt nejlepší :-) díky moc bez Vás bych tohle propojení nikdy nezvládl.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: