thinkphp 七牛云文件上传

<?php

namespace ga;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use think\Env;

class Qiniu
{
    public function __construct()
    {
        $accessKey = Env::get('qiniu.access_key');
        $secretKey = Env::get('qiniu.secret_key');
        $bucket = Env::get('qiniu.bucket');
        $this->domain = Env::get('qiniu.domain');
        $auth = new Auth($accessKey, $secretKey);
        $this->token = $auth->uploadToken($bucket);
        $this->uploadMgr = new UploadManager();
    }
    //file对象上传
    public function upload_p3($file)
    {
        $fileInfo = $file->getInfo();
        $extension = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
        //新文件名
        $unique = create_guid();
        $key = 'dd/'.date('Y').'/'.date('m').'/'.date('d').'/'.$unique.'.'.$extension;
        list($ret, $err) = $this->uploadMgr->putFile($this->token, $key, $fileInfo['tmp_name']);
        if ($err !== null) {
            logz($err);
            return false;
        }
        return $this->domain.'/'.$key; 
    }
    

}
//公共方法
//创建uuid
function create_guid($namespace = '') 
{ 
    $guid = '';
    $uid = uniqid("", true);
    $data = $namespace;
    $data .= $_SERVER['REQUEST_TIME'];
    $data .= $_SERVER['HTTP_USER_AGENT'];
    $data .= $_SERVER['LOCAL_ADDR'] ?? '';
    $data .= $_SERVER['LOCAL_PORT'] ?? '';
    $data .= $_SERVER['REMOTE_ADDR'];
    $data .= $_SERVER['REMOTE_PORT'];
    $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
    $guid = '{' .
        substr($hash, 0, 8) .
        substr($hash, 8, 4) .
        substr($hash, 12, 4) .
        substr($hash, 16, 4) .
        substr($hash, 20, 12) .
    '}';
    return md5($guid);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThinkPHP6 中,您可以使用多种方式来存储上传的文件,下面是其中常见的几种方式: 1. 本地存储 在本地服务器存储上传的文件是最常见的方式之一。您可以在控制器中使用 `move()` 方法将文件移动到您指定的目录中,例如: ```php public function upload() { // 获取上传的文件 $file = $this->request->file('image'); // 移动文件到指定目录 $info = $file->move('uploads'); // 输出文件路径 if ($info) { echo $info->getSaveName(); } else { echo $file->getError(); } } ``` 在上面的代码中,我们使用 `move()` 方法将上传的文件移动到 `uploads` 目录中,并输出文件路径。如果文件上传成功,`$info` 将返回一个 `SplFileInfo` 对象,您可以使用它来获取文件的详细信息,例如文件名、文件大小等。 2. 阿里云 OSS 存储 如果您使用阿里云的云服务器,可以使用阿里云对象存储服务(OSS)来存储上传的文件。只需要在配置文件(`config/filesystem.php`)中添加以下内容: ```php 'oss' => [ 'type' => 'oss', 'access_id' => 'your-access-id', 'access_key' => 'your-access-key', 'bucket' => 'your-bucket-name', 'endpoint' => 'your-endpoint', 'url' => 'your-url', ], ``` 然后,在控制器中使用 `put()` 方法将文件上传到 OSS,例如: ```php public function upload() { // 获取上传的文件 $file = $this->request->file('image'); // 上传文件到 OSS $filename = $this->filesystem->disk('oss')->put('uploads', $file); // 输出文件路径 echo $this->filesystem->disk('oss')->url($filename); } ``` 在上面的代码中,我们使用 `put()` 方法将文件上传到 OSS,并使用 `url()` 方法获取文件的 URL。如果您上传的文件很大,可以使用 `putFile()` 方法上传分块文件,以提高上传速度和稳定性。 3. 其他云存储 除了阿里云 OSS,您还可以使用七牛云存储、腾讯云 COS 等其他云存储服务来存储上传的文件。只需要在配置文件中添加相应的配置,然后在控制器中使用相应的方法即可。例如,使用七牛云存储: ```php 'qiniu' => [ 'type' => 'qiniu', 'access_key' => 'your-access-key', 'secret_key' => 'your-secret-key', 'bucket' => 'your-bucket-name', 'domain' => 'your-domain', ], ``` ```php public function upload() { // 获取上传的文件 $file = $this->request->file('image'); // 上传文件到七牛云 $filename = $this->filesystem->disk('qiniu')->put('uploads', $file); // 输出文件路径 echo $this->filesystem->disk('qiniu')->url($filename); } ``` 以上是几种常见的文件存储方式,您可以根据需要选择适合自己的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值