Article

2016-09-22 09:52:38

解决开发博客相册遇到的回调失败的问题

前言

昨天在使用七牛开发博客相册的的过程中,遇到了一个棘手问题,折腾了一晚上。

首先是我的需求:

博客后台直接上传本地图片,然后博客相册页面就能直接看到,但图片文件不疼存储在服务器上

花了点时间看了七牛的开发文档,然后思路差不多是这样的:

  1. 在后台程序中用Ajax直接向七牛传文件
  2. 七牛向回调地址callback发送回调信息
  3. callback验证回调信息并且将附加的信息写进数据库(相册)
  4. callback最后向七牛服务器发送回调结果
  5. 七牛再将回调结果返回给Ajax

刚开始一切都很顺利,上传文件到服务器,返回正常,添加回调地址和回调内容,回调程序返回的结果也很正常,最后再向回调程序添加信息入库的功能。但结果不是我想要的!!!

原因

我发现照片能正常上传,服务器也有了数据,可七牛向Ajax返回的一直是错误404,折腾了半天都没找出结果,后来查看Thinkphp的log,才发现是信息入库的时候有一句附加的日志添加的代码:

  1. add_log(用户名,状态,操作);

上面这句是调用添加操作日志的函数,也是向数据库中写信息,但是我这用户名是从session中取,回调的时候是没有我的登陆信息的,也就取不到session,在写数据库的时候刚好用户名这个字段不能为空,所以回调程序没有跑完,七牛服务器也就收不到回调结果,自然就返回错误信息。

解决方法

在网上找了找,也没有什么很好的处理方案,最后我在上传图片的页面新加一个隐藏的input,用于放SESSION中的用户名。上传的时候同时发出去,最后在回调的时候再把它写进数据库


Tags:
博客 七牛 PHP 
Stats:
1 comments
168 views