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

2024-08-25 16:38

本文主要是介绍对象存储oss集成到thinkPHP,将图片上传到oss里面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

可以在阿里云网站下载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:是否缩略图 */ 
function ossUpPic($fFiles,$n,$ossClient,$bucketName,$web,$isThumb=0){ $fType=$fFiles['type']; $back=array( 'code'=>0, 'msg'=>'', ); if(!in_array($fType, C('oss_exts'))){ $back['msg']='文件格式不正确'; return $back; exit; } $fSize=$fFiles['size']; if($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('OSS_TEST_BUCKET'); $ossClient = new \Org\OSS\OssClient(C('OSS_ACCESS_ID'), C('OSS_ACCESS_KEY'), C('OSS_ENDPOINT'), false); $web=C('OSS_WEB_SITE'); //图片  $fFiles=$_FILES['pic_1']; $rs=ossUpPic($fFiles,'s',$ossClient,$bucketName,$web,0);  if($rs['code']==1){ //图片  $img = $rs['msg']; //如返回里面有缩略图: $thumb=$rs['thumb'];             }else{ $this->error('图片有误:'.$rs['msg']); return; }  
}
第五步:调用,文件域名pic_1,要与第四步里面的$_FILES['pic_1']一致。action地址为控制器的操作地址,例如:/index.php/Home/Index/upPic  
<meta charset="UTF-8"/>  
<form action="/index.php/Home/Index/upPic" enctype="multipart/form-data" method="post">  <input type="file" name="pic_1" value="" />  <input type="submit" value="上传"/>  
</form>


这篇关于对象存储oss集成到thinkPHP,将图片上传到oss里面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106085

相关文章

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用