七牛图片上传的使用心得 PHP篇

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

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

前提:

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

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

3.你有理由使用七牛;

开始第一步

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

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

<?phpnamespace 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篇]

           

浏览人工智能教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值