php用户头像上传,前端将图片转为BASE64后上传后写入文件,之后将其读取显示出现的问题

未知生物 发布于 2017/01/25 22:13
阅读 1K+
收藏 3

用php写用户头像上传,前端用FileReader 对象中的readAsDataURL将图片转为BASE64后用ajax上传,后端php将其写入以用户id命名的文件中。每次检测以该用户id命名的文件是否存在,存在的话就读取数据,然后我用了

$image_code = fread($image,filesize($uid));
$js = "<script>var s_image =\"".$image_code."\";</script>"  ; //把imgae_code存到js的s_image这个全局变量里
echo $js; //执行js代码
echo "<script>sp_img();</script>";

把数据存进了js的全局变量里

前端:

function sp_img()    
{
		 var span = document.createElement('span');
	      span.id = 'image';
          span.innerHTML = ['<img class="thumb" src="', s_image, '"/>'].join('');
          document.getElementById('list').insertBefore(span, null);
}

但是这样加载的时候会很卡,而且大部分图片显示不出来,有的图片显示出来的但是变得很奇怪。。看html代码却没有问题

请问如何解决或是有什么更好的方法来实现呢?

加载中
0
重华
重华

如果题主显示的时候没忘base64decode的话,应该是base64编码在网络明文传输中时+号会丢失,需要先经过URLencode才能完整的传输

1
大茶园丁
大茶园丁
上传图片就上传图片, 用base64干嘛呢 , 哪里学来的歪门邪道。一个100k的图片你base64一下立马变140k左右,既耗网络流量又耗CPU资源,eggache。
0
Echo半拍
Echo半拍
base64存为图片文件比读数据库再转base64图片文件要快。原来这个思路就值得商榷
0
未知生物
未知生物

发现图片显示不了的原因是post数据传到后端时+变成了空格。。。

0
滔哥
滔哥

不明白,一个图片上传为嘛还要base64转一下!!!

返回顶部
顶部