跳到正文

Thinkphp在新浪SAE上传文件后怎么才能获取文件地址?

网友提供5 条回复
例如我上传一个xls文件:
在本地代码getUploadFileInfo()得到的是:
["savepath"] => string(22) "./Uploads/edata/201207/"
["savename"] => string(17) "500d1725e9c09.xls"


文件上传到SAE的Storage时, savepath 没有根目录名,也就是没法获得[sae]domain,是这样:
["savepath"] => string(13) "edata/201207/"
["savename"] => string(17) "500d1725e9c09.xls"

在控制器里我要访问刚刚上传的这个文件,访问地址是 savepath + savename ,在本地测试是能读到文件的,在SAE上地址用 savepath + savename 就不能了访问了。

而在SAE上应该是: 应用Storage地址 + 文件Domain + 上面的 edata/201207/500d1725e9c09.xls



在Thinkphp官方文档中配置config_sae.php这项只是为了模板显示时能访问正确地址,但Thinkphp在控制类或模型中要访问这文件怎么办呢?是不是还得自己专门去取新浪SAE里Storage文件的方法?这不就未必了用户程序无须修改就能兼容SAE的初衷?

回复

ElmerZhang

SAE定义了很多常量,判断有没有那常量
比如 if(defined('SAE_ACCESSKEY'))

feikeq

怎么判断是不是SAE?

ElmerZhang

@feikeq 加个if判断一下是不是SAE不就行了

feikeq

改成这样我在非SAE上就不能运行了。。。违背了用户无须修改程序就能兼容SAE的初衷...

ElmerZhang

$stor = new SaeStorage();
$url = $stor->getUrl($domain, $savepath . $savename);
$domain 八成是 uploads,试试。

↑