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相关推荐

  1. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  2. 集成阿里云OSS编写AliyunOSSUtil

    集成阿里云OSS编写AliyunOSSUtil 文章目录 集成阿里云OSS编写AliyunOSSUtil 1.引入sdk依赖 2.添加yml配置文件 3.编写 AliyunOSSUtil文件 3.1 ...

  3. 秀米编辑器(xiumi)+百度编辑器(Ueditor) 集成 :解决集成问题,秀米编辑器导出到百度编辑器格式问题,图片保存到自己的服务器(阿里云OSS)

    1.集成前提条件: 1. 需要集成百度编辑器到环境中 2.https环境下才可以导出数据到百度编辑器,如果不是https环境,会出现错误 然后我们开始讲解如何集成: 2.引入资源: //百度编辑器需要 ...

  4. 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)

    亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...

  5. SpringBoot集成阿里云OSS上传文件

    文章目录 前言 一.准备环境 1.在搜索框搜索 对象存储OSS 2.创建Bucket 3.找到开发相关信息 二.具体代码 1.Maven依赖 2.application.yml配置 3.AliOssP ...

  6. SringBoot集成阿里云OSS上传文件

    上一篇文章讲了如何将文件从linux同步到阿里云的oss有兴趣的小伙伴可以去看看,这篇文章讲述如何将文件上传到阿里云oss上,本文只详细写出后端java代码示例,前端和无用代码都会省略,可以上传文件, ...

  7. Springboot集成 阿里云OSS上传及下载

    文章目录 使用手册 maven依赖及环境配置 定义配置bean及OSS工具类 定义UploadController和DownloadController 下载接口优化为返回重定向oss路径 遇到的问题 ...

  8. 前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)

    整合篇一 前言 整合CRUD 前后端对接流程 添加路由 点击路由显示页面 在api文件夹创建js文件,定义接口地址和参数 创建vue页面引入js文件,调用方法实现功能 多条件查询 删除功能 增加功能 ...

  9. 安装es怎么在后台运行_ES备份索引数据到阿里云OSS

    ES的快照备份当前是存放在NAS下,考虑成本问题现在打算把快照备份到阿里云OSS下. https://github.com/aliyun/elasticsearch-repository-oss,此插 ...

  10. ThinkPHP3.2 实现阿里云OSS上传文件

    为什么80%的码农都做不了架构师?>>>    0.配置文件Config,加入OSS配置选项,设置php.ini最大上传大小(自行解决,这里不做演示) 'OSS' => arr ...

最新文章

  1. Android resource linking failed
  2. ondblog 修改informix日志模式
  3. mysql日期格式化季度_Mysql按周,按月,按日,按小时分组统计数据
  4. http://sourceforge.net/projects/rtspdirectshow/
  5. [Wix] 搞了这么久才知道Wix怎么装
  6. python3 运行you get_一个基于Python3的神奇插件——you-get
  7. 32乘法运算_算术运算指令
  8. 谨记这10条,就能给别人留下好印象?
  9. 李开复谈创业失败十原因:经不住诱惑 直接山寨
  10. Oliver运维管理系统之一庐山真面目
  11. pythonpm2.5空气质量提醒_Python实现抓取城市的PM2.5浓度和排名
  12. High-Sierra,MacOS10.13,增加IntelHD3000显存的方法
  13. Google奥运会彩蛋,你确定不来参加一下吗?
  14. 转一篇帖子-我是如何在网上卖鱼的
  15. Nodejs异步回调的优雅处理方法
  16. 我是怎样把工资从400-4000
  17. VR相关学习资源,VR学习资源,VR开发资源
  18. AO3400-ASEMI高效mos管AO3400
  19. 一例所有文件都打不开的数据恢复过程
  20. 20行代码爬取原神角色全图

热门文章

  1. 提神醒脑 MVP、MVVM 关系精讲
  2. 毕业设计 微信小程序 音乐播放器
  3. 网络编程close与shutdown的区别
  4. 老中医治蛋变成绿色了
  5. Linux下安装ODI
  6. python sklearn PR曲线 AUPR值
  7. 华为物联网操作系统 LiteOS
  8. Emily Morehouse的Python社区访谈
  9. 旧笔记本改linux桌面,在老旧笔记本电脑上成功安装xubuntu
  10. python搜索网页关键词_新闻网页Python爬虫(jieba分词+关键词搜索排序)