我必须在我的本地驱动器上保存base64文件,但是当我使用file_put_contents时图像已损坏。
我可以使用以下标记在浏览器中查看图像,但是当我使用file_put_contents时它不起作用。
$data = '<img src="data:image/png;base64,'.$image.'"/>';
代码:
$data = '<img src="data:image/png;base64,'.$image.'"/>';
//$data = str_replace(' ','+',$data);
$decoded=base64_decode($image);
file_put_contents('/opt/lampp/htdocs/image.png',$decoded);
这是我的编码图像内容: http://pastebin.com/PtzmceJe
答案 0 :(得分:1)
继续粘贴在此处的base64字符串:http://pastebin.com/PtzmceJe图片是GIF。文件名有时很重要,具体取决于图像查看器或操作系统..
将您的代码更改为此...
$decoded = base64_decode($image);
file_put_contents('/opt/lampp/htdocs/image.gif',$decoded);
..它应该适合你。
您可以在此处看到转换后的输出http://imgur.com/sWiwYaX作为GIF。
答案 1 :(得分:0)
您必须删除图片代码并仅使用代码的src
。字符串应如下所示:
数据:图像/ GIF; base64,2CiVBORw0KGgoAAAANSUhE
保存base64编码图像
<?php
//explode at ',' - the last part should be the encoded image now
$exp = explode(',', $data);
//we just get the last element with array_pop
$base64 = array_pop($exp);
//decode the image and finally save it
$data = base64_decode($base64);
//take care of your file extension
$file = 'image.gif';
//make sure you are the owner and have the rights to write content
file_put_contents($file, $data);
或直接使用您拥有的$image
变量。
<?php
//decode the image and finally save it
$data = base64_decode($image);
$file = 'data.png';
//make sure you are the owner and have the rights to write content
file_put_contents($file, $data);
答案 2 :(得分:0)
好像你的布线错误:
$data = '<img src="data:image/png;base64,'.$image.'"/>';
//$decoded=base64_decode($data); wrong $data
$decoded=base64_decode($image); //corrent
file_put_contents('/opt/lampp/htdocs/image.png',$decoded);
或者可能是写权限问题或路径问题,请尝试:
file_put_contents('image.png',$decoded);// if dir having write permission it should work then try with complete path