Hallo!
Ich bin neu im Forum und wusste nicht genau, ob dieses Problem hier ehr ins PHP oder in ein JavaScript-Forum muss, aber da ich das Problem ehr bei meinem PHP-Code vermute, poste ich es mal hier rein.
Seit mir nicht böse, wenn ich falsch liegen sollte und es doch in ein anderes Forum muss.
I habe ein kleines Script geschrieben, dass mir ein HTML5-Canvas-Element als PNG-Bild abspeichern soll.
Das ist mein JavaScript-Code:
Code:
function save_to_img(){
var req = null;
dataURL = document.getElementById('drawing_area_1').toDataURL("image/png");
var url = "../html/save_to_img.php";
var req = null;
try{
req = new XMLHttpRequest();
} catch (ms){
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (nonms){
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed){
req = null;
}
}
}
req.open("POST", url, true);
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(req.status == 200) {
window.open(url, "Save_To_Image");
return true;
} else {
alert(req.status + ': Serverproblem, maybe not available?');
}
break;
default:
return false;
break;
}
};
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send("img_data=" + dataURL);
}
Und hier der PHP-Code von der Datei: save_to_img.php
PHP-Code:
<?php
session_start();
$path = '../img/save_to_img/';
$format = 'png';
if(isset($_POST['img_data'])){
$data = $_POST['img_data'];
$data = str_replace('data:image/png;base64,', '', $data);
// $data = base64_decode($data);
$date = date('Y_m_d_-_H_i_s');
$i = 0;
$file_name = "scriman_img_".$date.".".$format;
while(is_file($path.$file_name)){
$file_name = "scriman_img_".$date."_".$i.".".$format;
$i++;
}
file_put_contents($path.$file_name, $data);
$_SESSION['save_to_file'] = $file_name;
} else {
header('Content-type: image/png');
header('Content-Disposition: attachment; filename="'.$_SESSION['save_to_file'].'"');
$data = file_get_contents($path.$_SESSION['save_to_file']);
unlink($path.$_SESSION['save_to_file']);
echo $data;
}
?>
Ich bekomme damit den Downloaddialog und kann auch eine Datei runterladen, die ist dann aber nicht anschaubar. Weiß jemand warum? Ich benutze FireFox 3.6.10.
Ich glaube, es hat etwas mit dem base64-encoding zu tun. Send eich die Bilddaten nämlich direkt per JavaScript an den Browser (siehe Script-Erweiterung)
Code:
window.open(dataURL, "NewWindow", "width=500,height=500");
..wird das BIld angezeigt und ich kann es über "Speichern unter..." auch abspeichern und ansehen. Kann jemand helfen?
Vielen Dank an alle die versuchen mir zu helfen schonmal im Voraus!
Viele Grüße
*Fuchur*