TP5上传图片到七牛云(亲测成功)

2 篇文章 0 订阅

介绍

本篇博文介绍的是用TP5框架实现上传图片到七牛云,可用于cdn加速 减轻服务器压力

提前准备

注册七牛云账号,可以有免费的10G储存空间。
到 个人中心-密钥管理 查看 AccessKey 和 SecretKey。
注意:
七牛云需要实名认证的,使用对象存储服务绑定的域名需要是备案的(如果没有备案的域名 七牛云提供一个月的测试域名)

安装七牛云官方SDK

composer require qiniu/php-sdk -vvv

在这里插入图片描述
可以看到成功安装

配置七牛云

在TP框架的config文件下添加如下配置

 'qiniu' => [
        'accessKey' => '***********************************',
        'secretKey' => '******************************',
        'domain' => '****************',//域名地址
        'bucket' => '*****',//空间名称
        'zone'=> '****'//区域
    ],

编写控制器代码

<?php
namespace app\index\controller;

use think\Controller;
use think\Config;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager; //实例化上传类


class Index extends Controller
{


	  //七牛云图片上传
    public function qiniuy() {
    	if ($this->request->isPost()) {

            if (empty($_FILES['image'])) {
            	response_json(-2, '请选择图片');
            }

            $key = $_FILES['image']['name'];//上传的图片名字
            $filePath = $_FILES['image']['tmp_name'];//本地图片路径

            $accessKey =config("qiniu")["accessKey"];
            $secretKey =config("qiniu")["secretKey"];
            $auth=new Auth($accessKey,$secretKey);

            $bucket =config("qiniu")["bucket"];
            $domain=config("qiniu")["domain"];
            $token = $auth->uploadToken($bucket);
            // 初始化 UploadManager 对象并进行文件的上传
            $uploadMgr = new UploadManager();
            // 调用 UploadManager 的 putFile 方法进行文件的上传
            list($ret, $err) = $uploadMgr->putFile($token, $key,$filePath);
            if ($err !== null) {
                return ["err"=>1,"msg"=>$err,"data"=>""];
            } else {

                $imgPath=$domain.'/'.$key;
                $path_data["thumb_url"] = $imgPath;
                // $insert = Db::name('top_bar')->insert($path_data);
                //这里可以将七牛云返回的图片地址写入数据库
                response_json(200, '上传七牛云成功',$path_data);
            }
           
        } else {
            response_json(-2, '请用POST提交');
        }
     }
	

}

由于博主是写成接口的形式的,所以代码会有多种返回提示的,这里也提供下接口返回方法

function response_json($code,$message,$data=array()){
    $errno = $code==200?0:$code;
    $res = array(
        'errno'=>$errno,
        'code'=>$code,
        'message'=>$message,
        'data'=>$data
    );
    echo json_encode($res);
    exit;
}

效果

在这里插入图片描述
在这里插入图片描述

总结

博主这里用的阿里云的服务器然后,在绑定域名的时候,建议小伙伴用二级域名绑定,例如image或者cdn等语义好一点的二级域名用作绑定域名,如果遇到问题不懂可以看官方的帮助文档,最后,代码方面优化个人觉得还是不够的,这里主要为了演示上传功能,如果有什么问题或者代码方面的问题,欢迎在评论区留言,互相交流学习下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值