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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 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搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
15天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
|
28天前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56432 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
7天前
|
Java 对象存储
java对接阿里云OSS上传
java对接阿里云OSS上传
60 2
|
16小时前
|
域名解析 对象存储
OSS绑定自定义域名(基于阿里云)
OSS绑定自定义域名(基于阿里云)
6 0
|
28天前
|
存储 弹性计算 数据管理
【阿里云弹性计算】ECS实例的冷热数据管理:利用阿里云 OSS 与 ECS 的高效协同
【5月更文挑战第28天】阿里云ECS与OSS协同,实现弹性计算服务的高效数据管理。ECS处理热数据,OSS存储冷数据,降低存储成本,提升性能。通过自动化策略实现数据自动迁移,优化实例性能,适用于电商图片、日志存储等场景。注意迁移策略设置和数据安全,为企业带来更大价值和竞争力。
125 1
|
1月前
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
129 5
|
1月前
|
安全 Linux 对象存储
数据备份到阿里云oss上,以防勒索病毒的破坏
数据备份到阿里云oss上,以防勒索病毒的破坏
55 0
|
1月前
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
629 2
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
1月前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1月前
|
机器学习/深度学习 存储 分布式计算
机器学习PAI常见问题之DLC的数据写入到另外一个阿里云主账号的OSS中如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。

热门文章

最新文章