I am trying to save base64 strings images from my custom module.
I have checked product image upload function:
$fieldName = 'image_base64_field';
$path = Mage::getBaseDir('media');
$uploader = new Varien_File_Uploader($fieldName);
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
//$uploader->addValidateCallback('catalog_product_image', Mage::helper('catalog/image'), 'validateUploadFile');
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(true);
$uploader->addValidateCallback(
Mage_Core_Model_File_Validator_Image::NAME,
Mage::getModel('core/file_validator_image'),
'validate'
);
//base64 string
$imgBase64 = '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABkAfQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACub8U+ONH8J+VDdvLcajcD/RtPtUMk8x6DCjoM9zjoayPEvjy4/tQ+G/B1rHq3iA/wCtJP8Ao9kO7SsO/wDs5z+OAbvhLwLD4fu7jWNSu31XxDeYNzfzKOP9iMfwJ2wPQdsAAGJFp3xE8Xst1qOqL4TsQS0VlZKJrhh28xzwOvQfiBUx+HvibEm34k60CfukxIccd/X8MV6HRQB5pcav418AzLdeIZ4/Efh3G2e8tbURXFr/ALbIvDL64+vHfv8AS9WsNb06LUNMu4rq0lGUlibIPt7H1B5FWyAylWAIIwQe9ec654EvvD08+v8Aw+lFje/6y40nH+i3gHYJ0RsdCMfhkmgD0eisLwl4qsfF+hx6jZ7o3BMdxbScPbyj7yMPUfqK3aACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEZlRSzEKqjJJOABXmeoeKNY8falPoPgqVrXS4m8u+8QYJUeqQf3m/2s+4xwS3W3uPiX4rn8M2N1NB4Z0tsavcQtt+1S/8+6kdhzu//VXo2n6dZ6TYQ2NhbR21rCu2OKNcKooAzvDHhXSfCGkrp+k2/lpndLIx3STP3Z27n9B2xW1RRQAUUUUAFFFFAHm3i7SL3whr7ePPD0TyREAa3p0Y4uYh1lUf316+/wCee90rVLPWtLttS0+dZ7S5QPHIvcf0I6EdjVwgEYIyDXl6o/wu8ZRRR4Hg/XLjaFJ+XT7pugHoj/kPbHIB6hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFea6v4q1Xxpqdx4b8Dy+VbxMY9R10g+XB6pD/ef3HTt6i3421y+1TVI/A3hubZqd2m+/u05+wWx6t/vsDgDrznjINdboOhaf4b0W20rTIBDawLtUd2PdmPcnqTQBF4Y8N6f4T0G30fTVYQQ5Jdzl5GJyWY9yT/QdBWvRRQAUUUUAFFFFABRRRQAVm+INCsvEug3mj6hHvtrqMo2Oqnsw9wcEfStKigDhvh5rt6yXnhPXXzruikRu5/5eoP8AlnMPXIwD74zya7muA+I+lXVm9l430ZGOp6L808Sdbq0zmSM/QZYenPfFdppmpWusaXa6jZSiW1uYllicd1Iz+dAFuiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuI8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';
$image = $path . DS . 'name.png';
//$result = $uploader->save($image);
///////////////////////////
//I don't know how to save above $imgBase64
Above $imgBase64 is coming from post, based on user's input/draw.
How should I achieve this?
UPDATE
I know I can do this from php, but I believe for better security, I should do it Magento way.
$data = 'data:image/png;base64,'. $imgBase64;
$source = fopen($data, 'w');
file_put_contents('image5.png', $source);
fclose($source);