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

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 阿里云的对象存储oss,类似七牛存储。 前几天有客户需要把图片放在阿里云的oss里面,百度过一些资料,好像都是oss比较旧的版本1.几的,现在上传一个比较新的oss版本v2.0.5,并集成到thinkPHP里面。

阿里云的对象存储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快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象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。更多详情见官网。
4236 2
|
存储 前端开发 开发工具
利用阿里云OSS(对象存储服务)快速搭建私人网盘
本文介绍了如何使用阿里云OSS搭建个人网盘的详细步骤。首先,注册阿里云账号并开通OSS服务,创建Bucket;接着,配置AccessKey和跨域访问(CORS)规则。然后,选择开源项目(如FileBrowser)或自定义前端,结合OSS SDK实现文件上传下载功能。最后,部署到服务器并绑定域名,确保安全与性能优化,如权限控制、数据备份及CDN加速。
2916 7
|
12月前
|
Java 对象存储
OSS对象存储Header方式JavaV4签名
本文介绍了如何使用Java代码生成阿里云OSS的V4签名授权。通过设置时间、访问密钥等参数,创建签名请求并输出授权信息。包含两张示意图展示流程和关键步骤。
474 1
|
安全 对象存储
OSS对象存储JavaV4签名
本文介绍了如何使用阿里云OSS-SDK生成V4版本的签名URL和Header签名。通过设置时间、访问密钥等参数,代码示例展示了如何创建带有V4签名的请求,适用于安全访问对象存储服务。相关文档链接提供了更多详细信息。
983 7
|
数据采集 Java Scala
淘宝图片爬虫:Scala与Curl的高效集成
淘宝图片爬虫:Scala与Curl的高效集成
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
4602 7
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
存储 人工智能 安全
OSS 深度解析:Data + AI 时代的对象存储
在 Data + AI 时代,随着大数据分析和 AI/ML 工作负载的进一步融合,对象存储 OSS 作为面向 AI 时代的数据基础设施,迎来了新的挑战与创新机遇。本话题我们将会介绍对象存储的能力创新,深度解读对象存储在实现稳定、安全、高性能和低成本背后的技术进展,并展望未来 AI 驱动趋势下的技术发展方向。
1913 2
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之多个业务流程上传同名资源到同一个OSS(对象存储服务)URL,会产生什么问题
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在使用MaxCompute进行数据集成同步到OSS时,出现表名和OSS文件名不一致且多了后缀,该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。