2009-10-07 3 views

Antwort

34

Meine beste Schätzung ist, dass Sie einfach base64_decode() auf $_REQUEST['data'] anrufen müssen, bevor Sie es in die Datei schreiben. Das sollte genug genug sein :).

+3

Seufz, das war einfach genug, sollte das getan haben, bevor Sie die Frage stellen! Vielen Dank. – mmattax

6

Ich würde denken, dass Sie mit base64_decode() decodieren möchten, es sei denn, Sie verwenden es nur wie sie hier sind HERE.

Die Sache, von der ich sicher bin, ist, dass Sie $ _REQUEST ['ID'] sanieren wollen, bevor Sie es benutzen.

+0

trotzig wird sanitize, nur versucht zu simplistic ... – mmattax

38

Sie müssen base64_decode() verwenden. UND. Manchmal reicht es nicht aus. Hier ist der gesamte Code, den Sie brauchen:

$img = $_POST['data']; 
$img = str_replace('data:image/png;base64,', '', $img); 
$img = str_replace(' ', '+', $img); 
$fileData = base64_decode($img); 
//saving 
$fileName = 'photo.png'; 
file_put_contents($fileName, $fileData); 

P.S. Ich habe diesen Code verwendet, um PNG-Bilder aus HTML-Canvas zu erhalten.

+0

Erhalten ein Fehler wegen dieser: Erlaubte Speichergröße von 134217728 Bytes erschöpft (versucht, 24 Bytes zuzuordnen). Übrigens verwende ich Ihren Code, um ein PNG-Bild von ToDataURL (mit Javascript) eines Canvas zu erhalten. – Kelsey

+0

Können Sie weitere Details angeben? Was genau verursacht Ihrer Meinung nach Ihren Fehler? Warum? Vielen Dank. –

+1

Dies sollte die akzeptierte Antwort sein. – CristiC