当前位置: 首页 > news >正文

php(tp框架)使用七牛云对象存储

图片文件存服务器非常占用存储带宽资源,且用户访问体验也不佳,因此使用一些第三方oss存储就很有必要了。之前lz发布了一篇tp使用阿里云oss的博文。不过阿里oss是收费的。而七牛云提供了一些免费使用额度。所以,这里额外补充一篇。

1.前提准备 

先去七牛云官网注册自己的账号,并申请好对象存储资源。创建一个空间。并绑定一个自定义源站域名。这里lz的空间名:liuqingwushui        源文件绑定域名为:liuqiniu.flchy.com 

最后记得去个人中心密钥管理把 AK,SK秘钥复制下来,后面会用得上。

 

2.tp框架引入SDK

 这里lz使用的tp框架是thinkphp5.0.24。结构目录大体如下。先去七牛云官网下载php sdk(PHP SDK_SDK 下载_对象存储 - 七牛开发者中心)。并将下载的sdk重命令为qiniu,把文件复制到vendor目录下。最终目录结构如下:

tips:这里注意一下下载的php sdk版本和php版本要对应,如果是很久之前的sdk版本。你在php7.4以上环境下运行,上传文件会报错:Trying to access array offset 。所以建议下载最新的sdk版本。

 

 引入sdk之后,直接在代码中调用即可。这里调用的核心Controller文件代码:

Imgupload.php

<?php
namespace app\qiniu\controller;
use think\Controller;
use think\Db;  //数据库连接类Db
require_once '../vendor/qiniu/autoload.php';
use \Qiniu\Auth;
use \Qiniu\Storage\UploadManager;class Imgupload extends Controller{public function index(){$loginstatus = true;  //可以调用方法来判断是否登录if($loginstatus){// 用于签名的公钥和私钥$accessKey = '你的ak';$secretKey = '你的sk';// 初始化签权对象$auth = new Auth($accessKey, $secretKey);// 空间名  https://developer.qiniu.io/kodo/manual/concepts$bucket = 'liuqingwushui';// 生成上传Token$token = $auth->uploadToken($bucket);// 构建 UploadManager 对象$uploadMgr = new UploadManager();// 上传文件到七牛$filePath = request()->file('file');$file=$filePath->getInfo()['tmp_name'];$key =$filePath->getInfo()['name'];  //文件名list($ret, $err) = $uploadMgr->putFile($token, $key, $file);if ($err !== null) {$array=array('code'=>'1','msg'=>"上传失败",'data'=>[]);} else {$array=array('code'=>'0','msg'=>"上传成功",'data'=>$ret);}echo json_encode($array);}}}

调用该接口,传入文件表单参数file,上传成功后会返回如下结果:

 该图片在七牛云的访问地址即:hots+key。这里的host就是前面提到的源文件绑定域名。

 

http://www.lryc.cn/news/39369.html

相关文章:

  • 八大排序算法之插入排序+希尔排序
  • 蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)
  • 【数论】最大公约数、约数的个数与约数之和定理
  • 第28篇:Java日期Calendar类总结(二)
  • 【Python】字符串 - 集大成篇
  • IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤
  • 算法的效率——时间复杂度和空间复杂度
  • 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】
  • 透过等待看数据库
  • 中科亿海微FPGA
  • 【链表OJ题(三)】链表中倒数第k个结点
  • 华为防火墙的学习
  • SPI 接口OLED 模块 - 兼容5V 和3.3V 电平
  • css布局和定位
  • python -- 批量读取多个文件,并将每个文件中相同变量累加
  • 低代码开发流程是怎么样的?
  • 任何时候都不要在 for 循环中删除 List 集合元素!!!
  • koa+Vite+vue3+ts+pinia构建项目
  • k8s-yaml文件
  • 存储引擎
  • Go中 channel的使用
  • 【C++】string OJ练习
  • 进程间通信IPC
  • 操作系统-页面淘汰算法(下)-软件设计(二十六)
  • 23种设计模式-责任链模式(Android开发实际应用场景介绍)
  • Socket+Select+Epoll笔记
  • git查看最近修改的文件
  • 【算法基础(四)】堆排序(二)
  • C++类型转换
  • Keil MDK6要来了,将嵌入式软件开发水平带到新高度,支持跨平台(2023-03-11)