sae下文件删除代码。

浏览:1697 发布日期:2014/11/20 分类:技术分享 关键字: sae 删除 文件 storage 上传
最近搞sae,文件上传没问题。
参见文章:
SAE上传的正确用法(tp3.2.2版本)
http://www.thinkphp.cn/topic/23931.html
但是官方并没有给出删除方法。
经过摸索,用一下方式实现了:
SAE官方方法说明:
------------------
delete (line 647)
删除文件
access: public
bool delete (string $domain, string $filename)
string $domain
string $filename
------------------
tp中代码只需要两行:
$s = new \SaeStorage();//实例化一个sae的stroage原生类。
$r=$s->delete($domain, $filename); //调用删除方法删除文件。
就是这么简单!但其中的参数到底什么格式让我尝试了很多次,
最后正确的格式是:
$domain:就是你建立的domain名字,比如upload,没有什么多于的斜杠和点。
$filename:是你domain下的文件路径和文件名称的合并字符串。
比如你domain下有img文件夹下有20141118的子文件夹下有abc.jpg图片,
那么filename就是:'img/20141118/abc.jpg'
按照这个格式传参数,搞定storage下的文件删除。
另外需要说明的一点是返回值,
如果删除成功返回true不成功false没问题。
但是有一点陷阱:
比如你的文件在sae上已经不存在了(比如你用sae管理面板手工删了等),
但是你数据库里这个图片的记录还在,这时候通过程序去删除一个不存在的图片也会返回false,但是从逻辑上讲我删除一个不存在的图片也应该是删除成功了才对。但是sae只是给出了一个统一的false结果。如何区别真正的删除错误还是文件已经不存在了不需要删除这两种情况呢:
if (!$r) {
//处理一下文件不存在了的sae删除返回错误
if (stripos($s->errmsg(),"success")===false){
$this->error = '文件删除失败'.$s->errmsg();
return false;
} else
{
return true;
}
} else {
------}
如果delete返回了false结果,看一下$s->errmsg()的具体错误信息。
如果错误信息中有success,那说明这个文件已经不存在了,可以自己转换
为true返回给你的其他逻辑代码处理,比如删除数据库记录等。
花了一天时间琢磨,特分享给大家。
最佳答案
评论( 相关
后面还有条评论,点击查看>>