TP5.1 TP6上传七牛云空间文件
1. TP框架 目录cmd 运行 `composer require qiniu/php-sdk`
文件自动下载到 tp5.com\vendor\qiniu
2.TP框架目录 config目录下
新建文件upload.php
<?php // 文件上传配置 return [ 'qiniu' => [ // 存储空间名称 填写自己的 'bucket' => 'heisi', // 存储空间的对应域名 填写自己的 'domain' => 'kodo.****.com', // 用于签名的公钥 AccessKey 填自己的 'accessKey' => 'xxxxxx', // 用于签名的私钥 SecretKey 填自己的 'secretKey' => 'xxxxxx', ], ];
3. 封装一个静态方法 用于 七牛云文件上传
<?php namespace app\demo\controller; use think\facade\Config; use Qiniu\Auth; use Qiniu\Storage\UploadManager; /** * 七牛云封装类 */ class Qiniu { /** * 文件上传到七牛云 * @return 在七牛云上的文件名 */ public static function upload($field = '', $dirname = '') { // 存储空间名称 $bucket = Config::get('upload.qiniu.bucket'); // 存储空间对应的域名 $domain = Config::get('upload.qiniu.domain'); // 用于签名的公钥 AK $accessKey = Config::get('upload.qiniu.accessKey'); // 用于签名的私钥 SK $secretKey = Config::get('upload.qiniu.secretKey'); $file = request()->file($field); if ($file) { // 临时文件路径 $tmpName = $file->getRealPath(); // 初始化鉴权对象 $auth = new Auth($accessKey, $secretKey); // 生成上传Token $token = $auth->uploadToken($bucket); // 上传管理类 构建UplaodManager对象 $uploadMgr = new UploadManager(); // 输出 后缀 $arr = $file->getInfo(); $ext=$arr['name']; $temp = pathinfo($ext); $ext=$temp['extension']; // dump($ext); // die(); // $ext = $file->getOriginalExtension(); TP6 后缀可以换成这个 // 目录名 if ($dirname != '') $dirname .= '/'; // 随机文件名 $path = $dirname . md5(microtime(true) . mt_rand(1, 1e9)) . '.' . $ext; $info = $uploadMgr->putFile($token, $path, $tmpName); // 上传到七牛云后的新名称 return $domain . '/' . $info[0]['key']; } else { return '没有文件上传'; } } }
演示:
方法:
public function shangchuan(){ if ( request()->isPost() ) { return \app\demo\controller\Qiniu::upload('headimgurl', 'article/content'); } return view(); }
前台:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form class="form-horizontal" action="" method="post" enctype="multipart/form-data"> <div class="form-group" style="margin-bottom: 25px;"> <label for="" class="col-sm-2 control-label no-padding-right">图</label> <div class="col-sm-6"> <input type="file" class="form-control" id="headimgurl" name="headimgurl" style="cursor: pointer;"> <img src="" id="headimgurl-view"> </div> <p class="help-block col-sm-4 red">* 必填</p> </div> <button type="submit" class="btn btn-primary">添加</button> </form> </body> </html>
访问方法即可 上传,上传成功 返回文件名
经原文 https://itqaq.com/index/art/8.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?