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);
}
}