57 lines
1.7 KiB
PHP
57 lines
1.7 KiB
PHP
<?php
|
|
namespace filesystem\driver;
|
|
|
|
use Closure;
|
|
use filesystem\adapter\QiniuAdapter;
|
|
use League\Flysystem\FilesystemAdapter;
|
|
|
|
class Qiniu extends \think\filesystem\Driver
|
|
{
|
|
protected function createAdapter(): FilesystemAdapter
|
|
{
|
|
return new QiniuAdapter(
|
|
$this->config['access_key'],
|
|
$this->config['secret_key'],
|
|
$this->config['bucket'],
|
|
$this->config['base_url'],
|
|
$this->config['path_prefix']
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 保存文件
|
|
* @param string $path 路径
|
|
* @param \think\File $file 文件
|
|
* @param null|string|\Closure $rule 文件名规则
|
|
* @param array $options 参数
|
|
* @return bool|string
|
|
*/
|
|
public function putFile(string $path, \think\File $file, $rule = null, array $options = [])
|
|
{
|
|
if (!empty($this->config['filename_generator']) && $this->config['filename_generator'] instanceof Closure) {
|
|
$rule = $this->config['filename_generator']($file, $rule);
|
|
}
|
|
|
|
return $this->putFileAs($path, $file, $file->hashName($rule), $options);
|
|
}
|
|
|
|
public function url(string $path): string
|
|
{
|
|
if (str_starts_with($path, 'http://') || str_starts_with($path, 'https://')) {
|
|
return $path;
|
|
}
|
|
if (!str_starts_with($path, $this->config['path_prefix'])) {
|
|
$path = $this->config['path_prefix'] . '/' . $path;
|
|
}
|
|
return $this->concatPathToUrl($this->config['base_url'], $path);
|
|
}
|
|
|
|
public function path(string $path): string
|
|
{
|
|
if (!str_starts_with($path, $this->config['path_prefix'])) {
|
|
$path = $this->config['path_prefix'] . '/' . $path;
|
|
}
|
|
return $path;
|
|
}
|
|
}
|