PHP 实现七牛云对象存储文件上传功能

126 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

使用背景

打算自己开发一个小程序,小程序获取用户信息的时候,微信会返回用户头像和用户昵称,本想拿着微信的url直接用,但是经过了解发现即使用户不修改头像,这个路径也是会变的,这就导致微信的url无法使用,因为不可能头像失效后就再次要求用户登录,这样体验感不好。于是就想着用七牛云来实现存储用户头像,找到七牛云的文档,发现不是特别完善,对新手来说,还是有点麻烦的,于是就写下这篇文章。(我PHP使用的是thinkPHP6 使用5也是可以的)

前期准备

  • 注册七牛云账号
  • 开通对象存储功能
  • 创建空间

image.png

  • 获取AccessKey/SecretKey 完成上面的步骤后,访问七牛云个人中心获取秘钥,如下图所示:

image.png

下载PHP SDK

下载地址:PHP SDK下载地址,我们根据文档提示下载好sdk,建议使用 Composer 下载,大家应该都有这个下载工具,没有的进入官网下载即可。下载完SDK后在 vendor 文件夹下有个 autoload.php 文件,这样就可以了。

php 代码

<?php
namespace app\controller;

use app\BaseController;
require '../vendor/autoload.php';
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

class Index extends BaseController
{
    public function index()
    {   
        $auth = new Auth('your AccessKey','your ');
        // 要上传的空间位置
        $token = $auth->uploadToken('你存储空间的名字');

        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        list($ret , $err) = $uploadMgr->putFile($token , '图片名字' , '图片url');

        return 'Upfile';
    }

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }
}

最后效果

image.png

总结

七牛云的对象存储其实使用起来很简单,就是一些配置写的不是很清楚,需要自己实践一遍。七牛云标准存储每月免费空间是每个月10G的流量,对于学生和个人开发体验的人来说是非常友好的,基本都够用。使用起来也比较方便,对于我小程序的流量来说,基本可以白嫖。