sae中thinkphp使用storage存储的相关问题

TIPS:首先声明使用sae实在是因为我的豆豆用不完

##sae中上传文件或者图片的方法
在sae中上传图片的方法基本没有变化
主要需要注意上传路径的设置,如下

$upload->savePath =  '/Public/upload';   // 设置附件上传目录

由于在config_sae.php中已经对/Public/upload有设置了

'/Public/upload'=>sae_storage_root('public').'/upload',

跟据上面的设置,默认上传到storage服务中的Public文件夹中

public function addHandle(){
    if(!IS_POST){
        halt('页面不存在');
    }

    import('ORG.Net.UploadFile');
    $upload = new UploadFile();                 // 实例化上传类

    $upload->savePath =  '/Public/upload';   // 设置附件上传目录
    $upload->allowExts  = array(
        'jpg','png','gif','bmp'
        );// 设置附件上传类型
    // 开启缩略图
    $upload->thumb = true;
    //设置需要生成缩略图的文件后缀
    $upload->thumbPrefix = 'l_';  //生产1张缩略图
    //设置缩略图最大宽度
    $upload->thumbMaxWidth = '100';
    //设置缩略图最大高度
    $upload->thumbMaxHeight = '100';

    if (!$upload->upload()) {
        $this->error('上传失败');
    }

    //取得成功上传的文件信息
    $info = $upload->getUploadFileInfo();

    $_POST['off'] = 0;
    $_POST['savename'] = $info[0]['savename'];

    if(M('fruit')->add($_POST) ){
        $this->success('添加水果成功',U('Fruit/index'));
    } else{
        $this->error('添加失败,请联系开发人员');
    }
}

完成上传功能后,上传的图片名为551cb261dcdbc.png
但是存储在storage Public文件夹下面的文件名为upload551cb261dcdbc.png
其中缩略图文件名l_upload551cb261dcdbc.png
所以在处理的过程中还有一些技巧

##显示图片
在config_sae.php中添加

'/stor'=>sae_storage_root('public'),

然后在显示页面添加

<td>
    <img src="/stor/l_upload{$v.savename}" />
</td>

##删除图片

public function deleteFruit(){
    $fruit = M('fruit')->where(array('id' => I('id') ))->select();
    $name1 = '/Public/upload'.$fruit[0]['savename'];////////////
    $name2 = '/Public/l_upload'.$fruit[0]['savename'];//////////

    if (M('fruit')->where(array('id' => I('id')))->delete()) {
        sae_unlink($name1);////////
        sae_unlink($name2);////////
        $this->success('删除成功');
    }else{
        $this->error('删除失败');
    }
}

其中在Thinkphp/Extend/Engine/Sae/Common/sae_functions.php
//平滑函数,sae和本地都可以用,增加系统平滑性

function sae_unlink($filePath) {
    if (IS_SAE) {
        $arr = explode('/', ltrim($filePath, './'));
        $domain = array_shift($arr);

        // echo $domain;

        $filePath = implode('/', $arr);

        // echo $filePath;

        $s = Think::instance('SaeStorage');
        return $s->delete($domain, $filePath);
    } else {
        return unlink($filePath);
    }
}