SAE 存取文件

本文讨论了在使用微信接口获取用户头像图片时遇到的盗链问题,并通过将图片存储在SAE服务器上解决了显示问题。包括使用file_put_contents的限制,以及如何正确配置和使用SAE Storage API。提供了从远程获取图片、命名、存储到最终显示的完整代码流程,以及实际应用效果展示。

今天在研究PHP和微信后台系统调用的时候发现一个问题,在调用微信接口取得用户数据头像图片的时候,有一个url地址,于是我直接用<img> src 指向这个地址,结果万恶的腾讯设置了盗链,使真正的图片显示不出来。


后来我搜了很多关于破解盗链的,还是不行,于是我就想,那干脆将图片存在服务器上,然后IMG指向服务器目录,因为我是用的SAE来做站点,后来发现在调用 file_put_contents 时,报错。是因为我没有SAE文件夹IO权限。


于是我查了SAE的API,发现SAE提供了Storage正是做这个的。于是我调用它的方法,存入地址,取出地址,解决图片显示问题。


当然SAE默认是没有开放这个功能,需要你去开启(如图我已经开启了这个功能):




开启后,就可以用代码来实现这个功能了,如下:

/*
* 特殊处理图片:腾讯会对盗链进行屏蔽,所以这里只能先将文件存入到SAE服务器,再用链接指向服务器文件
*/
		$img=file_get_contents($image);//获取远程,防盗链,返回值是二进制
		$m = $openid.".jpg";//命名头像
		file_put_contents ("saestor://weixinfile/".$m,$img);//存入本地,新浪必须加前缀saestor,存入Storage的Domain管理weixinfile
		
		//初始化类
		$s=new SaeStorage();  //调用SAE提供的类
		$url=$s->getUrl('weixinfile',$m);  //第一个参数是Domain的名称,第二个是路径名
		$printstr.= "<img src='".$url."' width='100px' height='100px' />";
		$userobj["headimage"] = $url;


效果如下:



特此跟大家分享。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值