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

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 演示效果和下载地址: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快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
4月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
6月前
|
编解码 数据处理 API
如何用阿里云OSS对图片和视频进行数据处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。OSS提供了丰富的功能,如图片的缩放、裁剪、旋转和水印添加等,用户只需在图片URL后附加处理参数即可实现自动化处理。同时,OSS还支持自定义样式模板,便于批量操作。对于视频处理,OSS支持转码、截图、拼接等功能,满足多终端播放需求。通过OSS的API和SDK,开发者可以方便地集成这些功能,提升数据管理效率。
|
6月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
6月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
8月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
551 0
|
6月前
|
存储 编解码 API
如何利用阿里云OSS进行图片和视频处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。内容包括OSS的基本功能、上传与管理媒体资源、图片处理(缩放、裁剪、旋转、水印等)、视频处理(转码、截图、拼接等)以及相关API的使用方法。通过OSS,用户可高效实现多媒体资源的存储与处理,适用于各类企业和开发者。
|
10月前
|
存储 Cloud Native 容灾
阿里云对象存储(OSS):企业数字化转型的核心存储引擎
阿里云对象存储(OSS)是全球领先的云原生存储服务,提供无限扩展的存储容量、高达12个9的数据持久性以及企业级安全防护。它支持智能分层存储降低成本,通过CDN加速实现高性能访问,并深度集成阿里云生态,适用于海量静态资源分发、大数据分析、备份容灾等场景。OSS以全生命周期管理与开发者友好工具助力企业高效、安全地释放数据价值,推动数字化转型。
2562 15
|
10月前
|
存储 弹性计算 数据管理
阿里云OSS对象存储收费标准价格表:流量包+存储包2025最新整理
阿里云OSS对象存储2025收费标准及请求费用等,提供按量付费与包年包月两种模式。标准型本地冗余存储按量价为0.09元/GB/月,包年包月如500GB仅118.99元/年。流量费仅收公网出方向,闲时0.25元/GB、忙时0.5元/GB。更多详情见官网。
4234 2
|
12月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
304 0