对象存储oss集成到thinkPHP,将图片上传到oss里面

该文章来自 https://www.erdangjiade.com/js/1021.html

阿里云的对象存储oss,类似七牛存储。 前几天有客户需要把图片放在阿里云的oss里面,百度过一些资料,好像都是oss比较旧的版本1.几的,现在上传一个比较新的oss版本v2.0.5,并集成到thinkPHP里面

可以在阿里云网站下载oss的demo源代码PHP版:v2.0.5
将oss扩展放入ThinkPHP/Vendor 里 这里写图片描述

第二步:公共配置文件里面
//oss配置
“OSS_ACCESS_ID” => ”,
“OSS_ACCESS_KEY”=> ”,
“OSS_ENDPOINT” => ”,// Endpoint以杭州为例,其它Region请按实际情况填写。”http://oss-cn-hangzhou.aliyuncs.com“;
“OSS_TEST_BUCKET” => ”, //OSS文件存放位置,
“OSS_WEB_SITE” =>”, //这个OSS_WEB_SITE是oss的bucket创建后的外网访问地址,如需二级域名,可以指向二级域名,具体可以参考阿里云控制台里面的oss

//oss文件上传配置 
'oss_maxSize'=>1048576,    //1M 
'oss_exts'   =>array(// 设置附件上传类型    
                'image/jpg',  
                'image/gif',  
                'image/png',  
                'image/jpeg', 
                'application/octet-stream',//阿里云好像都是通过二进制上传,似乎上面4个后缀设置起到什么用?  
            ),

第三步:公共function里面
// 返回json
function backJson( code, c o d e , info){
arr[status]= a r r [ ′ s t a t u s ′ ] = code;
arr[info]= a r r [ ′ i n f o ′ ] = info;
print_r(json_encode($arr));
exit;
}

//oss上传
/*
* fFiles: f F i l e s : 文 件 域 ∗ n:上传的路径目录
* ossClient o s s C l i e n t ∗ bucketName
* web:oss访 w e b : o s s 访 问 地 址 ∗ isThumb:是否缩略图
*/
function ossUpPic( fFiles, f F i l e s , n, ossClient, o s s C l i e n t , bucketName, web, w e b , isThumb=0){
fType= f T y p e = fFiles[‘type’];
back=array(code=>0,msg=>,);if(!inarray( b a c k = a r r a y ( ‘ c o d e ′ => 0 , ‘ m s g ′ => ” , ) ; i f ( ! i n a r r a y ( fType, C(‘oss_exts’))){
back[msg]=;return b a c k [ ‘ m s g ′ ] = ′ 文 件 格 式 不 正 确 ′ ; r e t u r n back;
exit;
}
fSize= f S i z e = fFiles[‘size’];
if(fSize>C(‘oss_maxSize’)){ fSize>C(‘oss_maxSize’)){ back[‘msg’]=’文件超过了1M’;
return $back;
exit;
}

$fname=$fFiles['name']; 
$ext=substr($fname,stripos($fname,'.')); 

$fup_n=$fFiles['tmp_name']; 
$file_n=time().'_'.rand(100,999); 
$object = $n."/".$file_n.$ext;//目标文件名 


if (is_null($ossClient)) exit(1);     
$ossClient->uploadFile($bucketName, $object, $fup_n); 
if($isThumb==1){ 
    // 图片缩放,参考https://help.aliyun.com/document_detail/44688.html?spm=5176.doc32174.6.481.RScf0S  
    $back['thumb']= $web.$object."?x-oss-process=image/resize,h_300,w_300"; 
}     
$back['code']=1; 
$back['msg']=$web.$object; 
return $back; 
exit;     

}
第四步:控制器里的操作方法里面,例如控制器是Index,
public function upPic(){
//oss上传
bucketName=C(OSSTESTBUCKET); b u c k e t N a m e = C ( ‘ O S S T E S T B U C K E T ′ ) ; ossClient = new \Org\OSS\OssClient(C(‘OSS_ACCESS_ID’), C(‘OSS_ACCESS_KEY’), C(‘OSS_ENDPOINT’), false);
web=C(OSSWEBSITE);// w e b = C ( ‘ O S S W E B S I T E ′ ) ; / / 图 片 fFiles= FILES[pic1]; F I L E S [ ‘ p i c 1 ′ ] ; rs=ossUpPic( fFiles,s, f F i l e s , ′ s ′ , ossClient, bucketName, b u c k e t N a m e , web,0);
if(rs[‘code’]==1){   
        //图片
rs[‘code’]==1){           //图片
img = rs[msg];// r s [ ‘ m s g ′ ] ; / / 如 返 回 里 面 有 缩 略 图 : thumb=rs[‘thumb’];  
    }else{
rs[‘thumb’];      }else{
this->error('图片有误:'.$rs[‘msg’]);
return;
}
}

第五步:调用,文件域名pic_1,要与第四步里面的$_FILES[‘pic_1’]一致。action地址为控制器的操作地址,例如:/index.php/Home/Index/upPic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值