TP5.1 TP6上传七牛云空间文件

1.  TP框架 目录cmd 运行  `composer require qiniu/php-sdk`

  文件自动下载到 tp5.comvendorqiniu

2.TP框架目录 config目录下 新建文件upload.php

  

<?php
// 文件上传配置
return [
    'qiniu' => [
        // 存储空间名称 填写自己的
        'bucket'    => 'heisi',
        // 存储空间的对应域名 填写自己的
        'domain'    => 'kodo.****.com',
        // 用于签名的公钥 AccessKey 填自己的
        'accessKey' => 'xxxxxx',
        // 用于签名的私钥 SecretKey 填自己的
        'secretKey' => 'xxxxxx',
    ],
];

3. 封装一个静态方法 用于  七牛云文件上传

  

<?php
namespace appdemocontroller;


use thinkfacadeConfig;
use QiniuAuth;
use QiniuStorageUploadManager;
 /**
 * 七牛云封装类
 */

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      appdemocontrollerQiniu::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

 

原文地址:https://www.cnblogs.com/79524795-Tian/p/14738330.html