zx/crmeb/services/UploadService.php

112 lines
3.9 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace crmeb\services;
use app\common\repositories\system\StorageRepository;
use crmeb\services\upload\Upload;
/**
* Class UploadService
* @package crmeb\services
*/
class UploadService
{
const STORAGE_LOCAL = 1;
const STORAGE_QINIU = 2;
const STORAGE_ALIYUN = 3;
const STORAGE_TENGXUN = 4;
const STORAGE_HUAWEI = 5;
const STORAGE_UCLOUD = 6;
const STORAGE_JINGDONG = 7;
const STORAGE_TIANYI = 8;
public function getType()
{
return [
['value' => self::STORAGE_QINIU, 'label' => '七牛云存储',],
['value' => self::STORAGE_ALIYUN, 'label' => '阿里云存储',],
['value' => self::STORAGE_TENGXUN, 'label' => '腾讯云存储',],
['value' => self::STORAGE_HUAWEI, 'label' => '华为云存储',],
['value' => self::STORAGE_UCLOUD, 'label' => 'UC云存储',],
['value' => self::STORAGE_JINGDONG, 'label' => '京东云存储',],
['value' => self::STORAGE_TIANYI, 'label' => '天翼云存储',],
];
}
public static function getPrefix($type = 1)
{
$prefix = [
self::STORAGE_QINIU => 'qiniu_',
self::STORAGE_ALIYUN => '',
self::STORAGE_TENGXUN => 'tengxun_',
self::STORAGE_HUAWEI => 'obs_',
self::STORAGE_UCLOUD => 'uc_',
self::STORAGE_JINGDONG => 'jdoss_',
self::STORAGE_TIANYI => 'ctoss_',
];
if ($type != 1) {
$prefix = $prefix[$type] ?? $prefix;
}
return $prefix;
}
/**
* @param $type
* @return Upload
*/
public static function create($type = null)
{
$type = $type ? : (systemConfig('upload_type') ?: 1);
$type = (int)$type;
$thumb = systemConfig(['thumb_big_height', 'thumb_big_width', 'thumb_mid_height', 'thumb_mid_width', 'thumb_small_height', 'thumb_small_width']);
$water = systemConfig(['image_watermark_status', 'watermark_type', 'watermark_image', 'watermark_opacity', 'watermark_position', 'watermark_rotate', 'watermark_text', 'watermark_text_angle', 'watermark_text_color', 'watermark_text_size', 'watermark_x', 'watermark_y']);
$config = [];
//除了本地存储其他都去获取配置信息
if ($type != self::STORAGE_LOCAL) {
$prefix = self::getPrefix();
$config['accessKey'] = systemConfig($prefix[$type].'accessKey');
$config['secretKey'] = systemConfig($prefix[$type].'secretKey');
$make = app()->make(StorageRepository::class);
$res = $make->getConfig($type);
$config['uploadUrl'] = $res['domain'];
$config['storageName'] = $res['name'];
//京东云特殊处理
if (self::STORAGE_JINGDONG !== $type){
$config['storageRegion'] = $res['region'];
}else{
$config['storageRegion'] = systemConfig('jd_storageRegion');
}
if(isset($res['cdn']) && $res['cdn']){
$config['cdn'] = trim($res['cdn'],'/').'/';
}
}
if ($type == self::STORAGE_TENGXUN) {
$config['appid'] = systemConfig('tengxun_appid');
}
$config = array_merge($config, ['thumb' => $thumb], ['water' => $water]);
return new Upload($type, $config);
}
}