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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 OSS,恶意文件检测 1000次 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>


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
2月前
|
编解码 数据处理 API
如何用阿里云OSS对图片和视频进行数据处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。OSS提供了丰富的功能,如图片的缩放、裁剪、旋转和水印添加等,用户只需在图片URL后附加处理参数即可实现自动化处理。同时,OSS还支持自定义样式模板,便于批量操作。对于视频处理,OSS支持转码、截图、拼接等功能,满足多终端播放需求。通过OSS的API和SDK,开发者可以方便地集成这些功能,提升数据管理效率。
|
4月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
251 0
|
2月前
|
存储 编解码 API
如何利用阿里云OSS进行图片和视频处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。内容包括OSS的基本功能、上传与管理媒体资源、图片处理(缩放、裁剪、旋转、水印等)、视频处理(转码、截图、拼接等)以及相关API的使用方法。通过OSS,用户可高效实现多媒体资源的存储与处理,适用于各类企业和开发者。
|
10月前
|
数据采集 Java Scala
淘宝图片爬虫:Scala与Curl的高效集成
淘宝图片爬虫:Scala与Curl的高效集成
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5854 16
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
580 1
|
2月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
2月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
2月前
|
存储 安全 API
某网盘不好用?有没有类似某网盘的存储软件?阿里云国际站 OSS:云存储的全能助手,你 get 了吗?
在数据爆炸时代,阿里云国际站OSS提供海量、安全、低成本的云存储服务,支持多种数据类型存储与灵活访问,助力企业与个人高效管理数据,降低存储成本。开通简便,操作友好,是理想的云端数据解决方案。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。

热门文章

最新文章