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

2012-08-13 12:15:45 +08:00
 feikeq
例如我上传一个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的初衷?
5459 次点击
所在节点    云计算
5 条回复
ElmerZhang
2012-08-13 12:33:07 +08:00
$stor = new SaeStorage();
$url = $stor->getUrl($domain, $savepath . $savename);
$domain 八成是 uploads,试试。
feikeq
2012-08-13 13:09:37 +08:00
改成这样我在非SAE上就不能运行了。。。违背了用户无须修改程序就能兼容SAE的初衷...
ElmerZhang
2012-08-13 13:17:33 +08:00
@feikeq 加个if判断一下是不是SAE不就行了
feikeq
2012-08-13 17:11:38 +08:00
怎么判断是不是SAE?
ElmerZhang
2012-08-13 17:14:41 +08:00
SAE定义了很多常量,判断有没有那常量
比如 if(defined('SAE_ACCESSKEY'))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/45002

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX