Merge branch 'feature/add_cdn' of wmtx/platform into release

文件保存改成cdn
master
万盟天下 5 years ago committed by Gogs
commit 61e9fb6c7b

@ -14,6 +14,7 @@ use Admin\Controller\BosController;
use Admin\Event\QiNiuEvent;
use Think\Model;
use Think\Upload;
use Base\Service\OssService;
/**
* 图片模型
@ -69,47 +70,20 @@ class PictureModel extends Model{
$this->where(['id'=>$value['id']])->save($data);
}
}
if (get_tool_status("oss_storage") == 1) {
$path = explode("/", $value['path']);
$to = "http://" . C("oss_storage.bucket") . "." . C("oss_storage.domain") . "/icon/" . $path[4];
$to = str_replace('-internal', '', $to);
// $to="http://down.vlcms.com/icon/".$path[4];
$updata['savename'] = $path[4];
$updata['path'] = "." . $value['path'];
$oss = new OssController();
$oss->upload_game_pak_oss($updata);
$data_url['oss_url'] = $to;
$coo = $this->where(array('id' => $value['id']))->save($data_url);
} elseif (get_tool_status("qiniu_storage") == 1) {//七牛上传
$path = explode("/", $value['path']);
$newName = $path[4];
$QiNiu = new QiNiuEvent();
$value['url'] = $data_url['url'] = "http://" . $QiNiu->upQiNiuFile($newName, "." . $value['path']);
$coo = $this->where(array('id' => $value['id']))->save($data_url);
}elseif(get_tool_status("cos_storage") == 1){
$path = explode("/", $value['path']);
$newName = $path[4];
$cos=new Coscontroller();
$cos_res=$cos->cosupload("." . $value['path'],"/Icon/".$newName);
if(strlen($cos_res)>10){
$data_url['url'] = $cos_res;
$coo = $this->where(array('id' => $value['id']))->save($data_url);
if (C('OSS_STATUS')) {
$path = explode('/', $value['path']);
$saveFileName = 'icon/' . $path[4];
$localFilePath = '.' . $value['path'];
$ossService = new OssService();
$result = $ossService->upload($localFilePath, $saveFileName);
if ($result['status']) {
$dataUrl['oss_url'] = $ossService->getUrl($saveFileName);
$coo = $this->where(['id' => $value['id']])->save($dataUrl);
} else {
$this->error = $result['message'];
return false;
}
}elseif(get_tool_status("bos_storage") == 1){ //上传到百度云
$path = explode("/", $value['path']);
$to = "http://" . C("bos_storage.bucket") . "." . C("bos_storage.domain") . "/icon/" . $path[4];
$to = str_replace('-internal', '', $to);
$updata['savename'] = $path[4];
$updata['path'] = "." . $value['path'];
$oss = new BosController();
$oss->upload_bos($updata);
$data_url['bos_url'] = $to;
$coo = $this->where(array('id' => $value['id']))->save($data_url);
}
}
return $info; //文件上传成功
} else {

@ -155,31 +155,12 @@ function get_img_url($cover_id){
return "";
}
$picture = M('Picture')->where(array('status'=>1))->getById($cover_id);
if (get_tool_status("oss_storage") == 1) {
if (C('OSS_STATUS')) {
if(!empty($picture['oss_url'])){
return $picture['oss_url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("qiniu_storage") == 1){
if(!empty($picture['url'])){
return $picture['url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("cos_storage") == 1){
if(!empty($picture['url'])){
return $picture['url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("bos_storage") == 1){
if(!empty($picture['bos_url'])){
return $picture['bos_url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
} else {
return 'http://' . $_SERVER['HTTP_HOST'] .__ROOT__.$picture['path'];
}

@ -328,7 +328,7 @@ class GameSourceService {
public function uploadPackage($localFilePath, $distFilePath, $isDeleteLocal = false)
{
$isChunk = C('PACKAGE_CHUNK_ENABLED') ? true : false;
if (get_tool_status('oss_storage') == 1) {
if (C('OSS_STATUS')) {
if ($isChunk) {
return $this->uploadPackageChunk($localFilePath, $distFilePath, $isDeleteLocal);
} else {
@ -349,7 +349,7 @@ class GameSourceService {
{
$client = new Client([
'base_uri' => C('PACKAGE_CHUNK_URL'),
'timeout' => 10.0,
'timeout' => 30.0,
]);
$response = $client->post('/upload', [
'verify' => false,

@ -12,23 +12,23 @@ class OssService {
private $accessKeyId = '';
private $accessKeySecret = '';
private $domain = '';
private $endpoint = '';
private $isCName = false;
private $bucket = '';
private $bdDomain = '';
private $domain = '';
private $client;
private $errorMessage = '';
public function __construct()
{
Vendor('OSS.autoload');
$this->accessKeyId = C('oss_storage.accesskeyid');
$this->accessKeySecret = C('oss_storage.accesskeysecr');
$this->domain = C('oss_storage.domain');
$this->isCName = C('oss_storage.is_cname');
$this->bdDomain = C('oss_storage.bd_domain');
$this->bucket = C('oss_storage.bucket');
$this->client = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->domain, $this->isCName);
$this->accessKeyId = C('OSS_ACCESS_KEY_ID');
$this->accessKeySecret = C('OSS_ACCESS_KEY_SECRET');
$this->endpoint = C('OSS_ENDPOINT');
$this->domain = C('OSS_DOMAIN');
$this->isCName = C('OSS_IS_CNAME');
$this->bucket = C('OSS_BUCKET');
$this->client = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint, $this->isCName);
}
public function upload($localFilePath, $saveFileName)
@ -103,21 +103,16 @@ class OssService {
$this->client->deleteObject($this->bucket, $deleteFile);
}
private function getUrl($saveFileName)
public function getUrl($saveFileName)
{
$url = '';
if ($this->isCName) {
$url = 'http://' . $this->domain . '/' . $saveFileName;
/* if ($this->isCName) {
$url = 'http://' . $this->endpoint . '/' . $saveFileName;
} else {
$url = 'https://' . $this->bucket . '.' . $this->domain . '/' . $saveFileName;
$url = 'https://' . $this->bucket . '.' . $this->endpoint . '/' . $saveFileName;
$url = str_replace('-internal', '', $url);
}
/**
* @todo unknown
*/
if (!empty($this->bdDomain) && strlen($this->bdDomain) > 5) {
$url = $this->bdDomain . $saveFileName;
}
} */
$url = $this->domain . '/' . $saveFileName;
return $url;
}
}

@ -2345,11 +2345,7 @@ function get_child_ids($id){
}
//获取图片连接
function icon_url($value){
if (get_tool_status("oss_storage") == 1){
$url=get_cover($value, 'path');
}elseif(get_tool_status("qiniu_storage") == 1){
$url=get_cover($value, 'path');
}elseif(get_tool_status("cos_storage") == 1){
if (C('OSS_STATUS')){
$url = get_cover($value, 'path');
} else {
$url = 'http://' . $_SERVER['HTTP_HOST'] . get_cover($value, 'path');

@ -1016,30 +1016,12 @@ function get_cover($cover_id, $field = null, $root = 1, $flag = true)
return "";
}
$picture = M('Picture')->where(array('status' => 1))->getById($cover_id);
if (get_tool_status("oss_storage") == 1) {
if (C('OSS_STATUS')) {
if (!empty($picture['oss_url'])) {
return str_replace('http:', 'https:', $picture['oss_url']);
} else {
return 'https://' . $_SERVER['HTTP_HOST'] . __ROOT__ . $picture['path'];
}
} elseif (get_tool_status("qiniu_storage") == 1) {
if (!empty($picture['url'])) {
return $picture['url'];
} else {
return '//' . $_SERVER['HTTP_HOST'] . __ROOT__ . $picture['path'];
}
} elseif (get_tool_status("cos_storage") == 1) {
if (!empty($picture['url'])) {
return $picture['url'];
} else {
return '//' . $_SERVER['HTTP_HOST'] . __ROOT__ . $picture['path'];
}
} elseif (get_tool_status("bos_storage") == 1) {
if (!empty($picture['bos_url'])) {
return $picture['bos_url'];
} else {
return '//' . $_SERVER['HTTP_HOST'] . __ROOT__ . $picture['path'];
}
} else {
if ($field == 'path') {
if (!empty($picture['url']) && get_tool_status('qiniu_storage') == 1) {

@ -10,6 +10,7 @@
namespace Home\Model;
use Think\Model;
use Think\Upload;
use Base\Service\OssService;
/**
* 图片模型
@ -55,29 +56,19 @@ class PictureModel extends Model{
unset($info[$key]);
}
}
if (get_tool_status("oss_storage") == 1) {
$path = explode("/", $value['path']);
$to = "http://" . C("oss_storage.bucket") . "." . C("oss_storage.domain") . "/icon/" . $path[4];
$to = str_replace('-internal', '', $to);
$updata['savename'] = $path[4];
$updata['path'] = "." . $value['path'];
$oss = A('Oss');
$oss->upload_game_pak_oss($updata);
$data_url['oss_url'] = $to;
$coo = $this->where(array('id' => $value['id']))->save($data_url);
} elseif (get_tool_status("qiniu_storage") == 1) {//七牛上传
$path = explode("/", $value['path']);
$newName = $path[4];
$QiNiu = A('QiNiu','Event');
$value['url'] = $data_url['url'] = "http://".$QiNiu->upQiNiuFile($newName, ".".$value['path']);
$coo = $this->where(array('id' => $value['id']))->save($data_url);
} elseif(get_tool_status("bos_storage") == 1){ //上传到百度云
$path = explode("/", $value['path']);
$updata['savename'] = $path[4];
$updata['path'] = "." . $value['path'];
$bos =A('Bos');
$bos ->upload_bos($updata);
$coo = $this->where(array('id' => $value['id']))->save($data_url);
if (C('OSS_STATUS')) {
$path = explode('/', $value['path']);
$saveFileName = 'icon/' . $path[4];
$localFilePath = '.' . $value['path'];
$ossService = new OssService();
$ossService->upload($localFilePath, $saveFileName);
if ($result['status']) {
$dataUrl['oss_url'] = $ossService->getUrl($saveFileName);
$coo = $this->where(['id' => $value['id']])->save($dataUrl);
} else {
$this->error = $result['message'];
return false;
}
}
}
return $info; //文件上传成功

@ -548,31 +548,12 @@ function get_img_url($cover_id){
return "";
}
$picture = M('Picture')->where(array('status'=>1))->getById($cover_id);
if (get_tool_status("oss_storage") == 1) {
if (C('OSS_STATUS')) {
if(!empty($picture['oss_url'])){
return $picture['oss_url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("qiniu_storage") == 1){
if(!empty($picture['url'])){
return $picture['url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("cos_storage") == 1){
if(!empty($picture['url'])){
return $picture['url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}elseif(get_tool_status("bos_storage") == 1){
if(!empty($picture['bos_url'])){
return $picture['bos_url'];
}else{
return 'http://' . $_SERVER['HTTP_HOST'] . __ROOT__.$picture['path'];
}
}else{
return 'http://' . $_SERVER['HTTP_HOST'] .__ROOT__.$picture['path'];
}

@ -9,6 +9,7 @@
namespace Admin\Controller;
use OSS\OssClient;
use Think\ShardUpload;
use Base\Service\OssService;
/**
* 文件控制器
* 主要用于下载模型的文件上传和下载
@ -79,7 +80,7 @@ class FileController extends AdminController {
if(($path = $uploader->upload('file', $_POST)) !== false){
if(I('get.type') == "1"){
$file_info = json_decode($path, true);
$this->upload_oss("Material/",$file_info['name'],$file_info['path'].'/'.$file_info['name']);
$url = $this->uploadOss("Material/",$file_info['name'],$file_info['path'].'/'.$file_info['name']);
$file_info['path'] = "http://".C('CND_ADDRESS')."/Material";
$path = json_encode($file_info);
}
@ -170,93 +171,11 @@ class FileController extends AdminController {
/**
*上传到OSS
*/
public function upload_oss($oss_path,$file_name,$file_path)
public function uploadOss($ossPath, $fileName,$filePath)
{
/**
* 根据Config配置得到一个OssClient实例
*/
try {
Vendor('OSS.autoload');
$ossClient = new \OSS\OssClient(C("oss_storage.accesskeyid"), C("oss_storage.accesskeysecr"), C("oss_storage.domain"));
} catch (OssException $e) {
$this->error($e->getMessage());
}
$oss_file_path = $oss_path . $file_name;
$avatar = $file_path;
try {
$this->multiuploadFile($ossClient, C("oss_storage.bucket"), $oss_file_path, $avatar);
return true;
} catch (OssException $e) {
/* 返回JSON数据 */
$this->error($e->getMessage());
}
}
public function multiuploadFile($ossClient, $bucket, $url, $file)
{
//$file = __FILE__;
$options = array();
try {
#初始化分片上传文件
$uploadId = $ossClient->initiateMultipartUpload($bucket, $url);
//$ossClient->multiuploadFile($bucket, $url, $file, $options);
} catch (OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n");
printf($e->getMessage() . "\n");
return;
}
/*
* step 2. 上传分片
*/
$partSize = 5 * 1000 * 1024;
$uploadFile = $file;
$uploadFileSize = filesize($uploadFile);
$pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize);
$responseUploadPart = array();
$uploadPosition = 0;
$isCheckMd5 = true;
foreach ($pieces as $i => $piece) {
$fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO];
$toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1;
$upOptions = array(
$ossClient::OSS_FILE_UPLOAD => $uploadFile,
$ossClient::OSS_PART_NUM => ($i + 1),
$ossClient::OSS_SEEK_TO => $fromPos,
$ossClient::OSS_LENGTH => $toPos - $fromPos + 1,
$ossClient::OSS_CHECK_MD5 => $isCheckMd5,
);
if ($isCheckMd5) {
$contentMd5 = \OSS\Core\OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos);
$upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5;
}
//2. 将每一分片上传到OSS
try {
$responseUploadPart[] = $ossClient->uploadPart($bucket, $url, $uploadId, $upOptions);
} catch (OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
printf($e->getMessage() . "\n");
return;
}
//printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} OK\n");
}
$uploadParts = array();
foreach ($responseUploadPart as $i => $eTag) {
$uploadParts[] = array(
'PartNumber' => ($i + 1),
'ETag' => $eTag,
);
}
/**
* step 3. 完成上传
*/
try {
$a = $ossClient->completeMultipartUpload($bucket, $url, $uploadId, $uploadParts);
} catch (OssException $e) {
printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n");
printf($e->getMessage() . "\n");
return;
}
$ossFilePath = $ossPath . $fileName;
$ossService = new OssService();
$ossService->upload($filePath, $ossFilePath);
return $ossService->getUrl($ossFilePath);
}
}

Loading…
Cancel
Save