Reputation: 27710
What's the proper way in PHP to create an image file (PNG), when I have the base64 encoding?
I've been playing around with:
file_put_contents('/tmp/'. $_REQUEST['id'].'.png', $_REQUEST['data']);
do I need to decode? should I be using the gd library?
Upvotes: 41
Views: 80899
Reputation: 41430
You need to use base64_decode(). AND. Sometimes it is not sufficient. Here is all code that you need:
$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. I used this code to get PNG image from html canvas.
Upvotes: 66
Reputation: 4546
I would think you'd want to decode with base64_decode() unless you are only using it like they are here HERE.
The thing I am sure of is that you will want to sanitize $_REQUEST['id'] before using it.
Upvotes: 6
Reputation: 4733
My best guess is that you simply need to call base64_decode()
on $_REQUEST['data']
before writing it to the file. That should be plenty enough :).
Upvotes: 37