thinkphp集成系列之阿里云oss
2019独角兽企业重金招聘Python工程师标准>>>
web2.0时代;除了纯信息展示类的网站;基本都是有文件上传功能的;
最不济你得让用户换个头像吧;但是随着业务的发展;
如果上传的文件都和网站程序源代码放在一起;那是有相当多的弊端的;
1:静态文件会占用大量带宽;
2:服务器的成本略高;
常规的做法是把php源代码放到一台服务器上;图片等静态文件放在另一台服务器上;
当一个神奇的“云”时代的到来后;一切就变的更加简单了;
在业务还比较小的时候;我们无需大费周折的去搞一台静态文件服务器;直接使用第三方的即可;
好了;洛里啰嗦了半天;下面请出本篇博客的主角:阿里云oss;
我就不再安利oss的优势了;还没了解过的先跟着这个链接走:https://www.aliyun.com/product/oss/
一:准备工作
1:申请key和secret
2:创建Bucket
需要注意的是要把读写权限改为: 公共读;
根据服务器的位置获取外网endpoint;https://help.aliyun.com/document_detail/31834.html
ok;凑齐了这些配置项;下面可以召唤神龙了;
二:填写配置项
依然是以项目示例:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
/Application/Common/Conf/config.php
'ALIOSS_CONFIG' => array('KEY_ID' => '', // 阿里云oss key_id'KEY_SECRET' => '', // 阿里云oss key_secret'END_POINT' => '', // 阿里云oss endpoint'BUCKET' => '' // bucken 名称),
三:实例化并上传
/Application/Common/Common/function.php
/*** 实例化阿里云oos* @return object 实例化得到的对象*/ function new_oss(){vendor('Alioss.autoload');$config=C('ALIOSS_CONFIG');$oss=new \OSS\OssClient($config['KEY_ID'],$config['KEY_SECRET'],$config['END_POINT']);return $oss; }/*** 上传文件到oss并删除本地文件* @param string $path 文件路径* @return bollear 是否上传*/ function oss_upload($path){// 获取配置项$bucket=C('ALIOSS_CONFIG.BUCKET');// 先统一去除左侧的.或者/ 再添加./$oss_path=ltrim($path,'./');$path='./'.$oss_path;if (file_exists($path)) {// 实例化oss类$oss=new_oss();// 上传到oss $oss->uploadFile($bucket,$oss_path,$path);// 如需上传到oss后 自动删除本地的文件 则删除下面的注释 // unlink($path);return true;}return false; }
ok现在首先使用框架的Upload上传类上传文件到服务器;获得文件路径;
调用oss_upload()函数;传入获得的文件路径;即可把文件上传到oss;
四:便捷方式
看第三步;我们可以发现;每上传一个文件就要调用oss_upload()函数;
那可不可以上传文件以后自动就上传到oss呢?
当然可以了;但是我们要对框架的Upload做点手术;
在 /ThinkPHP/Library/Think/Upload.class.php 的第229行添加如下代码;
//*************************添加部分开始************************* // 判断是否上传成功 if (!empty($info)) {// 获取需要上传到oss的目录$need_upload_oos=C('NEED_UPLOAD_OSS');foreach ($info as $k => $v) {// 判断此路径是否需要上传到ossforeach ($need_upload_oos as $m => $n) {if (strpos($v['savepath'], $n)!==false) {// 上传到ossoss_upload($v['savepath'].$v['savename']);continue;}} }} //*************************添加部分结束*************************
然后在配置项中设置哪些目录的文件自动上传到oss;
/Application/Common/Conf/config.php
'NEED_UPLOAD_OSS' => array( // 需要上传的目录'/Upload/avatar','/Upload/cover','/Upload/image/webuploader','/Upload/video',),
如果只有个别目不上传、或者是所有目录都上传的;直接改配置项和Upload即可;
四:获取文件链接
图片之类的静态文件是上传到oss了;那链接怎么获取呢?
/Application/Common/Common/function.php
/*** 获取完整网络连接* @param string $path 文件路径* @return string http连接*/ function get_url($path){// 如果是空;返回空if (empty($path)) {return '';}// 如果已经有http直接返回if (strpos($path, 'http://')!==false) {return $path;}// 获取bucket$bucket=C('ALIOSS_CONFIG.BUCKET');return 'http://'.$bucket.'.oss-cn-beijing.aliyuncs.com'.$path; }
调用上面这个get_url()函数;传入第三步获取到的文件路径;即可得到oss的文件链接;
到此;从创建、上传、获取文件链接;整个流程就结束了;
如果要整合到自己有的项目中;
那只需要把/ThinkPHP/Library/Vendor/Alioss文件夹拷贝到自己项目同目录下;
把上面哪些配置项和函数拿过去就可以直接用;
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com
转载于:https://my.oschina.net/u/2296413/blog/679527
thinkphp集成系列之阿里云oss相关推荐
- thinkPHP 阿里云OSS 上传文件、直接下载
阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...
- 集成阿里云OSS编写AliyunOSSUtil
集成阿里云OSS编写AliyunOSSUtil 文章目录 集成阿里云OSS编写AliyunOSSUtil 1.引入sdk依赖 2.添加yml配置文件 3.编写 AliyunOSSUtil文件 3.1 ...
- 秀米编辑器(xiumi)+百度编辑器(Ueditor) 集成 :解决集成问题,秀米编辑器导出到百度编辑器格式问题,图片保存到自己的服务器(阿里云OSS)
1.集成前提条件: 1. 需要集成百度编辑器到环境中 2.https环境下才可以导出数据到百度编辑器,如果不是https环境,会出现错误 然后我们开始讲解如何集成: 2.引入资源: //百度编辑器需要 ...
- 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)
亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...
- SpringBoot集成阿里云OSS上传文件
文章目录 前言 一.准备环境 1.在搜索框搜索 对象存储OSS 2.创建Bucket 3.找到开发相关信息 二.具体代码 1.Maven依赖 2.application.yml配置 3.AliOssP ...
- SringBoot集成阿里云OSS上传文件
上一篇文章讲了如何将文件从linux同步到阿里云的oss有兴趣的小伙伴可以去看看,这篇文章讲述如何将文件上传到阿里云oss上,本文只详细写出后端java代码示例,前端和无用代码都会省略,可以上传文件, ...
- Springboot集成 阿里云OSS上传及下载
文章目录 使用手册 maven依赖及环境配置 定义配置bean及OSS工具类 定义UploadController和DownloadController 下载接口优化为返回重定向oss路径 遇到的问题 ...
- 前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
整合篇一 前言 整合CRUD 前后端对接流程 添加路由 点击路由显示页面 在api文件夹创建js文件,定义接口地址和参数 创建vue页面引入js文件,调用方法实现功能 多条件查询 删除功能 增加功能 ...
- 安装es怎么在后台运行_ES备份索引数据到阿里云OSS
ES的快照备份当前是存放在NAS下,考虑成本问题现在打算把快照备份到阿里云OSS下. https://github.com/aliyun/elasticsearch-repository-oss,此插 ...
- ThinkPHP3.2 实现阿里云OSS上传文件
为什么80%的码农都做不了架构师?>>> 0.配置文件Config,加入OSS配置选项,设置php.ini最大上传大小(自行解决,这里不做演示) 'OSS' => arr ...
最新文章
- Android resource linking failed
- ondblog 修改informix日志模式
- mysql日期格式化季度_Mysql按周,按月,按日,按小时分组统计数据
- http://sourceforge.net/projects/rtspdirectshow/
- [Wix] 搞了这么久才知道Wix怎么装
- python3 运行you get_一个基于Python3的神奇插件——you-get
- 32乘法运算_算术运算指令
- 谨记这10条,就能给别人留下好印象?
- 李开复谈创业失败十原因:经不住诱惑 直接山寨
- Oliver运维管理系统之一庐山真面目
- pythonpm2.5空气质量提醒_Python实现抓取城市的PM2.5浓度和排名
- High-Sierra,MacOS10.13,增加IntelHD3000显存的方法
- Google奥运会彩蛋,你确定不来参加一下吗?
- 转一篇帖子-我是如何在网上卖鱼的
- Nodejs异步回调的优雅处理方法
- 我是怎样把工资从400-4000
- VR相关学习资源,VR学习资源,VR开发资源
- AO3400-ASEMI高效mos管AO3400
- 一例所有文件都打不开的数据恢复过程
- 20行代码爬取原神角色全图