发布阿里云OSS for phpcmsV9整合教程
说明:这个算不上是插件,因为没有安装包,需要手工修改代码。
还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:
1、个人的需求是前台页面需要使用thumb函数生成多个缩略图大小,thumb函数是不支持远程图片的(保存在OSS上就变远程图片了),即使修改为支持远程图片,也需要将远程图片先保存到本地,这样速度会非常慢,是非常非常;
2、做备份的需要,这点你懂得,某天OSS上的附件没有了就悲剧了,所以使用这个OSS for phpcmsV9需要服务器有一定的空间。
下面是整合的教程:修改代码前请先备份好文件
1、下载OSS的SDK,下载地址
http://dev.aliyun.com/article/detail?spm=0.0.0.62.q5af2S&article_id=45
2、解压SDK压缩包,打开conf.inc.php,修改Access Key ID和Access Key Secret为自己的,如何获取API 密钥(Access ID & Access Key ),
3、将SDK包中的以下文件放入红色框的路径
4、打开phpcms\modules\admin\templates\setting.tpl.php
搜索
<td class="y-bg"><input type="text" class="input-text" name="setconfig[upload_url]" id="upload_url" size="" value="<?php echo $upload_url?>" /></td>
</tr>
在下方添加
<!--阿里云OSS配置 S-->
<tr>
<th width=""><?php echo L('setting_oss_enable')?></th>
<td class="y-bg">
<input name="setconfig[oss_enable]" value="" type="radio" <?php echo ($oss_enable=='') ? ' checked' : ''?>> <?php echo L('setting_yes')?>
<input name="setconfig[oss_enable]" value="" type="radio" <?php echo ($oss_enable=='') ? ' checked' : ''?>> <?php echo L('setting_no')?></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_id')?></th>
<td class="y-bg">
<input type="text" class="input-text" name="setconfig[oss_id]" id="oss_id" size="" value="<?php echo $oss_id?>" />
<div class="onShow">还没有?<a href="http://help.aliyun.com/manual?spm=0.0.0.111.8BPOua&helpId=786" target="_blank">到这里获取API 密钥</a></div>
</td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_secret')?></th>
<td class="y-bg"><input type="password" class="input-text" name="setconfig[oss_secret]" id="oss_secret" size="" value="<?php echo $oss_secret?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_bucket')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_bucket]" id="oss_bucket" size="" value="<?php echo $oss_bucket?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_path')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_path]" id="oss_path" size="" value="<?php echo $oss_path?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_upload_url')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_upload_url]" id="oss_upload_url" size="" value="<?php echo $oss_upload_url?>" /></td>
</tr>
<!--阿里云OSS配置 E-->
=====打开phpcms\languages\zh-cn\admin.lang.php
在?>前加入
$LANG['setting_oss_enable'] = '启用阿里云存储';
$LANG['setting_oss_id'] = 'Access Key ID';
$LANG['setting_oss_secret'] = 'Access Key Secret';
$LANG['setting_oss_bucket'] = 'Bucket名称';
$LANG['setting_oss_path'] = 'OSS上的图片目录';
$LANG['setting_oss_upload_url'] = '访问路径';
打开phpcms\modules\admin\setting.php,
搜索
$setting['errorlog_size'] = trim($_POST['setting']['errorlog_size']);
在下方添加
//阿里云云存储配置
$setting['oss_enable'] = intval($_POST['setconfig']['oss_enable']);
$setting['oss_id'] = trim($_POST['setconfig']['oss_id']);
$setting['oss_secret'] = $_POST['setconfig']['oss_secret'];
$setting['oss_bucket'] = trim($_POST['setconfig']['oss_bucket']);
$setting['oss_path'] = trim($_POST['setconfig']['oss_path']);
$setting['oss_upload_url'] = trim($_POST['setconfig']['oss_upload_url']);
=====打开phpcms\modules\attachment\attachments.php
搜索
$this->groupid = param::get_cookie('_groupid') ? param::get_cookie('_groupid') : ;
在下方加入
$this->oss = getcache('common','commons'); //载入云存储配置的缓存
再搜索
echo $aids[].','.$this->upload_url.$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
替换为
if($this->oss['oss_enable']){ //图片云存储
echo $aids[].','.$this->oss['oss_upload_url'].$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
}else{
echo $aids[].','.$this->upload_url.$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
}
=====打开phpcms\libs\classes\attachment.class.php
搜索
var $site = array();
在下方加入
var $oss; //云存储
再搜索
$this->upload_dir = $upload_dir;
在下方加入
$this->oss = getcache('common','commons'); //载入云存储配置的缓存
再搜索
if($watermark_enable) {
$image->watermark($savefile, $savefile);
}
在下方加入
if($this->oss['oss_enable']){ //图片云存储
pc_base::load_app_class('sdk', '' ,); //载入OSS类
$oss_sdk_service = new ALIOSS();
$oss_sdk_service->set_debug_mode(FALSE); //设置是否打开curl调试模式
$oss_sdk_service->upload_file_by_file($this->oss['oss_bucket'],$this->oss['oss_path'].$filepath,$this->upload_root.$filepath);
}
再搜索
if($thumbs) foreach($thumbs as $thumb) @unlink($thumb);
在下方加入
//删除OSS上的图
if($this->oss['oss_enable']){ //图片云存储
pc_base::load_app_class('sdk', 'attachment' ,); //载入OSS类
$oss_sdk_service = new ALIOSS();
$oss_sdk_service->set_debug_mode(FALSE); //设置是否打开curl调试模式
$oss_sdk_service->delete_object($this->oss['oss_bucket'],$this->oss['oss_path'].$r['filepath']);
}
5、后台设置(设置 > 相关设置 > 基本设置),对照以下图片
phpcms和uploadfile这个两个都需要手工创建
OSS上的设置
5、最后一点就是将相关模型字段中的editor修改为不保存远程图片:
更新缓存!
看下图的路径
转载:bs.phpcms.cn/thread-758240-1-1.html
发布阿里云OSS for phpcmsV9整合教程的更多相关文章
- phpcmsv9 阿里云OSS云存储整合教程
该教程算不上是phpcmsv9阿里云oss插件,所以整个修改及其代码覆盖前请一定记得备份.还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:1.个人的需求是前台页面需要使用t ...
- 保姆级SpringBoot+Vue图片上传到阿里云OSS教程
小二是新来的实习生,作为技术 leader,我给他安排了一个非常简单的练手任务,把前端 markdown 编辑器里上传的图片保存到服务器端,结果他真的就把图片直接保存到了服务器上,这下可把我气坏了,就 ...
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
- SpringBoot 2.0整合阿里云OSS,实现动静分离架构
前言 相信大部分开发者对下面这张架构图并不陌生吧,现在很多网站/应用都采用了动静分离的架构进行部署.博主的博客也不例外,主机采用的是阿里云的 ECS,使用 CDN 做静态内容分发,不过静态文件还是存储 ...
- 整合阿里云OSS
整合阿里云OSS 一.对象存储OSS 为了解决海量数据存储与弹性扩容,采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服务 (1)申请阿里云账号 (2)实名认证 ...
- 阿里云OSS整合
一.对象存储OSS 为了解决海量数据存储与弹性扩容(主要是静态文件的存储例如图片,语音,视频等),项目中我们通常采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服 ...
- SpringBoot整合阿里云OSS对象存储实现文件上传
1. 准备工作: 一.首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间. 二.创建Access Keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文 ...
随机推荐
- Realtek 8168 安装 VMware ESXi 提示没有驱动
设备描述 Realtek RTL8168/8111 PCI-E Gigabit Ethernet Adapter 第一次安装提示: vmware esxi 5.5 install no netwo ...
- java爬虫实战
1.下载jxl.jar包,网上多的是 2.编写如下代码: package com.beyond.url; import java.io.BufferedReader;import java.io.Fi ...
- nginx 添加perl
首先,要知道你原安装的nginx版本,以及原来安装的模块,用nginx -V即可 /usr/sbin/nginx -V 结尾处的--add-module 重新安装时这里可以去掉, 然后去官网下载一个相 ...
- win10 TortoiseSVN 部分图标不显示
原因:https://msdn.microsoft.com/en-us/library/cc144123(VS.85).aspx Note The number of different icon ...
- Log4日志配置及使用
1.log4j.xml <?xml version="1.0" encoding="gb2312" ?> <!DOCTYPE log4j:co ...
- unique踢出相同元素
unique函数的功能是:去除相邻的重复元素(只保留一个). 函数参数:unique(first,last,compare); //first为容器的首迭代器,last为容器的末迭代器,compare ...
- Cocos2dx3.0过渡篇 各种遍历与范围for语句的使用【转】
1.CCArray的遍历看到这里,有些人又按耐不住的要举起西瓜刀了:你不是说3.0beta后已经没有CCArray这货了吗?现在又拿出来作甚?其实我也很无辜,CCArray确实是没了,但在某个不为人知 ...
- 在 angularjs 中集成 bootstrap typeahead
问题 在使用 typeahead 的时候,有这样一个需求,当用户选中其中一项的之后,将项目对应的 id 保存到另外一个变量中,以后在提交表单的时候,将这个 id 发送到服务器中. 但是,在 typea ...
- Unity AssetBundles and Resources指引 (一)
本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...
- android 自定义组件
Google 公司为我们开发Android应用程序提供了丰富的UI组件,有时一个控件无法满足我们的需求,这就要求我们同时使用两个三个或者个更多的控件一起使用.有些常用的组合我就把他写成一个自定的的组件 ...