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

 

 

 

 

 

posted @   79524795  阅读(289)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示