开发者社区> 源码下载> 正文

thinkPHP实现对象存储oss,将图片上传到阿里云oss

简介: 演示效果和下载地址:http://www.erdangjiade.com/js/1021.html 可以在阿里云网站下载oss的demo源代码PHP版:v2.
+关注继续查看

演示效果和下载地址http://www.erdangjiade.com/js/1021.html
可以在阿里云网站下载oss的demo源代码PHP版:v2.0.5
https://help.aliyun.com/document_detail/32174.html?spm=5176.doc44688.6.375.MwiLwn
不过,阿里云的这个demo,用的是命名空间(命名空间具体功能我也没搞懂,各位自行百度,高手请路过),如要集成到thinkPHP里面需要修改下相关文件和命名空间,我已经整理好了。

第一步:将oss引入到tp框架里面,路径为:
Thinkphp-->Library-->Org,将OSS文件夹放在org里面。

第二步:公共配置文件里面
//oss配置
"OSS_ACCESS_ID" => '',
"OSS_ACCESS_KEY"=> '',
"OSS_ENDPOINT" => '',
"OSS_TEST_BUCKET" => '',
"OSS_WEB_SITE" =>'', //上面4个就不用介绍了,这个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,$info){
$arr['status']=$code;
$arr['info']=$info;
print_r(json_encode($arr));
exit;
}

//oss上传
/*
*$fFiles:文件域
*$n:上传的路径目录
*$ossClient
*$bucketName
*$web:oss访问地址
*$isThumb:是否缩略图
*/
  1. function ossUpPic($fFiles,$n,$ossClient,$bucketName,$web,$isThumb=0){ 
  2.     $fType=$fFiles['type']; 
  3.     $back=array( 
  4.         'code'=>0, 
  5.         'msg'=>'', 
  6.     ); 
  7.     if(!in_array($fType, C('oss_exts'))){ 
  8.         $back['msg']='文件格式不正确'; 
  9.         return $back; 
  10.         exit; 
  11.     } 
  12.     $fSize=$fFiles['size']; 
  13.     if($fSize>C('oss_maxSize')){ 
  14.         $back['msg']='文件超过了1M'; 
  15.         return $back; 
  16.         exit; 
  17.     } 
  18.      
  19.     $fname=$fFiles['name']; 
  20.     $ext=substr($fname,stripos($fname,'.')); 
  21.      
  22.     $fup_n=$fFiles['tmp_name']; 
  23.     $file_n=time().'_'.rand(100,999); 
  24.     $object = $n."/".$file_n.$ext;//目标文件名 
  25.      
  26.  
  27.     if (is_null($ossClient)) exit(1);     
  28.     $ossClient->uploadFile($bucketName, $object, $fup_n); 
  29.     if($isThumb==1){ 
  30.         // 图片缩放,参考https://help.aliyun.com/document_detail/44688.html?spm=5176.doc32174.6.481.RScf0S  
  31.         $back['thumb']= $web.$object."?x-oss-process=image/resize,h_300,w_300"; 
  32.     }     
  33.     $back['code']=1; 
  34.     $back['msg']=$web.$object; 
  35.     return $back; 
  36.     exit;     
  37. }

  38. 第四步:控制器里的操作方法里面,例如控制器是Index   
  39. public function upPic(){  
  40.     //oss上传 
  41.     $bucketName = C('OSS_TEST_BUCKET'); 
  42.     $ossClient = new \Org\OSS\OssClient(C('OSS_ACCESS_ID'), C('OSS_ACCESS_KEY'), C('OSS_ENDPOINT'), false); 
  43.     $web=C('OSS_WEB_SITE'); 
  44.     //图片  
  45.     $fFiles=$_FILES['pic_1']; 
  46.     $rs=ossUpPic($fFiles,'s',$ossClient,$bucketName,$web,0);  
  47.     if($rs['code']==1){ 
  48.         //图片  
  49.         $img = $rs['msg']; 
  50.         //如返回里面有缩略图: 
  51.         $thumb=$rs['thumb'];             
  52.     }else{ 
  53.         $this->error('图片有误:'.$rs['msg']); 
  54.         return; 
  55.     }  
  56. }

  57. 第五步:调用,文件域名pic_1,要与第四步里面的$_FILES['pic_1']一致。action地址为控制器的操作地址,例如:/index.php/Home/Index/upPic  
  58. <meta charset="UTF-8"/>  
  59. <form action="/index.php/Home/Index/upPic" enctype="multipart/form-data" method="post">  
  60.     <input type="file" name="pic_1" value="" />  
  61.     <input type="submit" value="上传"/>  
  62. </form>
复制代码
演示效果和下载地址http://www.erdangjiade.com/js/1021.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云OSS如何把才能把图片最小最快的加载?
阿里云OSS如何把才能把图片最小最快的加载?
19 0
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
7 0
阿里云闫卫斌:打造具备极致容灾能力的对象存储
数字经济时代,数据正呈现爆炸式的增长。有数据表明,近6年来中国数据增量年均增速超过30%。如此快速增长的数据,离不开相应的存储设备提供支撑。传统集中式存储受性能天花板的限制,难以满足海量数据存储的需求。分布式存储以Scale out(横向扩展)为特征,正成为海量数据存储的首选,这已经成为业内的普遍共识。
19202 0
PolarDB-PG | PostgreSQL + 阿里云OSS 实现高效低价的海量数据冷热存储分离
数据库里的历史数据越来越多, 占用空间大, 备份慢, 恢复慢, 查询少但是很费钱, 迁移慢 怎么办? 冷热分离方案: - 使用PostgreSQL 或者 PolarDB-PG 存成parquet文件格式, 放到aliyun OSS存储里面. 使用duckdb_fdw对parquet文件进行查询. - duckdb 存储元数据(parquet 映射) 方案特点: - 内网oss不收取网络费用, 只收取存储费用, 非常便宜 - oss分几个档, 可以根据性能需求选择 - parquet为列存储, 一般历史数据的分析需求多,性能不错 - duckdb 支持 parquet下推过滤, 数据过滤性能不错
4843 0
谷粒学院——Day06【整合阿里云OSS、EasyExcel技术实现Excel导入分类】
谷粒学院——Day06【整合阿里云OSS、EasyExcel技术实现Excel导入分类】
69 0
阿里云OSS设置跨域访问
阿里云OSS设置跨域访问
710 0
《阿里云 JindoFS+OSS 数据上云实战》电子版地址
为了帮助读者能更全面地了解 JindoFS,我们特地编撰了这本电子书。从架构到场景到实操,全方面解读jindoFS。
39 0
国际阿里云CDN加速导致OSS配置的CORS失效怎么解决!!!
当阿里云对象存储OSS的Bucket配置了CDN加速或开启了图片处理服务功能,可能会导致OSS上配置的CORS失效。
52 0
通过非上海oss链接请求阿里云人脸修复增强接口
在使用阿里云视觉智能开放平台时,除了使用oss链接调用接口,也可以通过本地图片流的方式调用接口
36 0
国际版阿里云对象储存oss被盗刷了怎么解决?
对于上云的客户来讲,网站app图片的云端存储离不开对象存储oss,而最难为的问题就是app做的出名了,少不了同行的攻击,包含ddos,cc攻击以及oss外链被盗刷! 今天野牛云(yeniucloud.com)就教大家如何设置防盗链来避免别人的恶意盗刷图片或apk下载包的流量。
78 0
+关注
源码下载
本人二当家的,性温和,擅代码,好技术,人谓代码狗,程序猿;河南商丘人氏也,现居上海,曾先后创办,上海什尔网络科技,上海红苹果电脑科技有限公司,上海素商网络科技等;自毕业即誓言:定要搞网络,携思科、华为等路由、交换机以定天下;初涉江湖,身不由己,期间,曾开过水果店,熟食店,亦开过淘
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
百问百答-OSS (上)
立即下载
百问百答-OSS (下)
立即下载
阿里云 JindoFS+OSS 数据上云实战
立即下载