曾写过一篇文章随便写了写我怎么用七牛的,发现很多小伙伴来问我,这回写个详细的。

前提:

1.已经有七牛账号,创建了空间,能看到AccessKey/SecretKey;

2.你知道怎么用composer,你对前后端都比较了解;

3.你有理由使用七牛;

开始第一步

第一步:安装PHP-SDK,使用composer:composerrequire qiniu/php-sdk;
第二步:编写七牛类

我用的是Yii框架,但是这个类貌似没用到Yii的什么东西,大家可以参考,注释写的也比较全了,代码后我会解释。

<?php
namespace common\models;use Qiniu;
use Qiniu\Auth;
use Qiniu\Storage\BucketManager;use Yii;
use yii\base\Model;class Qniu extends Model
{/*** 获取缓存图片的Token*/static function getCacheToken(){$const_arr = Yii::$app->params['qiniu']['const'];// 初始化签权对象$auth = new Auth($const_arr['access_key'], $const_arr['secret_key']);// 要上传的空间$bucket = '******';// 生成上传 Token$token = $auth->uploadToken($bucket, null, 3600, ['deleteAfterDays' => 1], false);return $token;}/*** 拷贝图片*/static function copyto($key_from, $key_to){$const_arr = Yii::$app->params['qiniu']['const'];// 初始化签权对象$auth = new Auth($const_arr['access_key'], $const_arr['secret_key']);// 初始化BucketManager$bucketMgr = new BucketManager($auth);// 空间名称$bucket = '******';// 将$key_from复制到$key_to。可以在不同bucket复制 第一个$bucket是源,第二个$bucket是目标$err = $bucketMgr->copy($bucket, $key_from, $bucket, $key_to);if ($err !== null) {return false;}return true;}static function deletekey($key){$const_arr = Yii::$app->params['qiniu']['const'];// 初始化签权对象$auth = new Auth($const_arr['access_key'], $const_arr['secret_key']);// 空间名称$bucket = '******';// 初始化BucketManager$bucketMgr = new BucketManager($auth);// 删除$bucket中的文件$key$err = $bucketMgr->delete($bucket, $key);if ($err !== null) {return false;}return true;}
}

为什么要获取一个缓存token呢?那你要问问自己为什么要用七牛保存图片,我是为了两点

第一:用七牛上传和下载速度不用我担心,也不占用我自己网站的带宽;

第二:七牛什么融合CDN加速,看起来屌屌的,屌屌的东西就是要用一用;

对了!还有最关键的一点,以我的网站现在的流量,就是在免费用;

既然我要省带宽,那我就不能让用户把图片传到我的服务器,然后我再发送给七牛,而是用户直接放到七牛上,但是呢,用户直接放到七牛上,我还不知道这个图片用户到底用没用,那怎么办?那就让用户上传一个缓存图片,只缓存一天,用户如果使用这个图片了,一定会提交一个表单,表单中会带有图片的key,也就是地址,然后我再把这个图片变成永久的,就全都OK啦~

但是这里有一个坑:七牛没有缓存转永久的办法(也可能是我对七牛不够了解),所以我的办法是复制用户缓存的图片到另外一个地方,就变成永久的了。

所以总体流程是这样的(以修改个人信息为例):

1.用户来到修改个人信息页面,这时候去自己的服务器获取缓存七牛Token,也就是我写的那个getCacheToken方法。

2.Plupload得到了Token,用户选择头像时选择一个图片,点击上传,就传到了七牛服务器上,然后七牛会返回一个key,这时把key保存起来。

3.用户修改其他信息,姓名之类的,修改完成后用户点击保存。

4.后台接受到用户的表单,把其中的图片的key取出来,调用copyto方法,把key复制成另一个key,然后将其他信息和新的key保存,并返回给前端。

这时候整个流程就完事了。

后端PHP的事基本就完事了(我省略了编写api接口的过程),剩下的就是前端的细节问题。

前端我推荐大家使用Plupload插件,具体Plupload如何使用,我会再单独写一个文章,写完之后会在此附上链接。

七牛图片上传的使用心得[JS篇]

七牛图片上传的使用心得[PHP篇]相关推荐

  1. 七牛图片上传的使用心得

    我写了一篇有关七牛的教程:http://blog.csdn.net/shuzipai/article/details/74573953 我使用七牛是因为我懒得管理图片,也懒得处理图片缩放之类的东西. ...

  2. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  3. android 队列上传图片,话说android端七牛图片上传

    七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...

  4. 话说android端七牛图片上传

    七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...

  5. html5七牛图片上传js,前端如何上传图片至七牛云

    上传文件是我们在前端开发中经常遇到的一个问题.最近在做某项目管理后台的时候,需要将轮播图上传至七牛云.以前在Vue里面做过类似的功能,但是在Angular中使用同样的方法发现行不通. 此篇文章主要介绍 ...

  6. 七牛云 图片上传覆盖

    php使用七牛云上传图片,覆盖云上已有文件: 使用七牛云存储提供的PHP SDK,可以非常方便的将本地文件上传到七牛,但默认情况下,上传的文件不会覆盖旧文件,也就是说,之前上传了一个名为photo.j ...

  7. 计划用php写一个七牛文件上传小工具

    为什么80%的码农都做不了架构师?>>>    功能 输入框中填入:bucket   Access Key 和 Secret Key 点击提交后,向七牛服务器认证,若认证通过,则在当 ...

  8. php七牛分片上传_七牛视频切片方案 - 张小超fly的个人空间 - OSCHINA - 中文开源技术交流社区...

    使用七牛 sdk 上传视频并做分片操作. step1 生成 token const qiniu = require("qiniu"); var accessKey = proc.e ...

  9. java前端接收回显图片_图片上传并回显后端篇

    图片上传并回显后端篇 我们先看一下效果 继上一篇的图片上传和回显,我们来实战一下图片上传的整个过程,今天我们将打通前后端,我们来真实的了解一下,我们上传的文件,是以什么样的形式上传到服务器,难道也是一 ...

最新文章

  1. 22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
  2. 教师计算机应用研讨交流,计算机应用技术专业技能比赛研讨交流活动在济南信息工程学校举行...
  3. 解决数据库导入导出的常见问题集解决办法
  4. Linux上安装Hadoop集群(CentOS7+hadoop-2.8.3)
  5. 如何批量更改Mac视频帧速率
  6. bat 下 字符串拆分 类似 split 可以使用 for /f delims
  7. docker容器启动失败解决办法
  8. 分享 25 个有用的 JS 单行代码
  9. java文本反垃圾_java毕业设计_springboot框架的反垃圾邮件管理分析系统
  10. 设置图片的透明度从左到右渐变
  11. 面对阿里云、腾讯云、百度云、青云等云计算平台,大家选择的时候更看重什么?
  12. ubuntu php7 pdo,记录捣鼓ubuntu下PHP7.1下安装sqlserver拓展
  13. 两边同时取对数求复合函数_【函数与导数】复合函数求导的几个妙用
  14. java中的\t\r\n\b(Java转义字符)分别是什么?
  15. html顺时针复制原则,图纸的叠法
  16. 超级3合1U盘维护系统
  17. 计算机类在职博士学科,武汉理工大学计算机专业在职博士招生简章
  18. jdk版本8u201 8u202 区别
  19. h5+js调取相机做取景框_使用Vue.js开发微信小程序:开源框架mpvue解析
  20. WSF操作系统抽象层学习笔记 (一) ---简介和内存管理

热门文章

  1. mysql四种隔离级别
  2. 手机App开发行业前景怎么样?
  3. 雷军:我也想做高级工程师 !
  4. 驱动工程师面试题汇编
  5. 基于阿里云的智能插座——(立创EDA项目)
  6. 樊登《创业,从发心到执行》课程学习总结
  7. 有趣的海盗分金币问题
  8. 紫光同创国产FPGA学习之器件情况
  9. 修改win7的登录界面背景与关机背景
  10. JSP自定义带属性的标签