146 lines
4.3 KiB
PHP
146 lines
4.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace addons\nkeditor\controller;
|
||
|
|
||
|
use app\common\model\Attachment;
|
||
|
use GuzzleHttp\Client;
|
||
|
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||
|
use think\addons\Controller;
|
||
|
|
||
|
class Index extends Controller
|
||
|
{
|
||
|
|
||
|
public function index()
|
||
|
{
|
||
|
$this->error('该插件暂无前台页面');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 文件列表
|
||
|
*/
|
||
|
public function attachment()
|
||
|
{
|
||
|
$model = new Attachment;
|
||
|
$page = $this->request->request('page');
|
||
|
$fileType = $this->request->request('fileType');
|
||
|
$module = $this->request->param('module');
|
||
|
$pagesize = 15;
|
||
|
$config = get_addon_config('nkeditor');
|
||
|
$type = [];
|
||
|
$imageSuffix = ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg'];
|
||
|
if ($fileType == 'image') {
|
||
|
$type = $imageSuffix;
|
||
|
} elseif ($fileType == 'flash') {
|
||
|
$type = ['swf', 'flv'];
|
||
|
} elseif ($fileType == 'media') {
|
||
|
$type = ['swf', 'flv', 'mp4', 'mpeg', 'mp3', 'wav', 'ogg', 'acc', 'webm'];
|
||
|
} elseif ($fileType == 'file') {
|
||
|
|
||
|
}
|
||
|
if ($module == 'admin') {
|
||
|
$auth = \app\admin\library\Auth::instance();
|
||
|
if (!$auth->id) {
|
||
|
$this->error('请登录后再操作!');
|
||
|
} else {
|
||
|
$mode = $config['attachmentmode_admin'];
|
||
|
}
|
||
|
if ($mode == 'all') {
|
||
|
|
||
|
} else {
|
||
|
if (!$auth->isSuperAdmin()) {
|
||
|
$adminIds = $mode == 'auth' ? $auth->getChildrenAdminIds(true) : [$auth->id];
|
||
|
$model->where('admin_id', 'in', $adminIds);
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
if (!$this->auth->id) {
|
||
|
$this->error('请登录后再操作!');
|
||
|
} else {
|
||
|
$mode = $config['attachmentmode_index'];
|
||
|
}
|
||
|
if ($mode == 'all') {
|
||
|
|
||
|
} else {
|
||
|
$model->where('user_id', 'in', [$this->auth->id]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($type) {
|
||
|
$model->where('imagetype', 'in', $type);
|
||
|
}
|
||
|
|
||
|
$list = $model
|
||
|
->order('id', 'desc')
|
||
|
->paginate($pagesize);
|
||
|
|
||
|
$fullmode = !!($config['fullmode'] ?? '1');
|
||
|
$items = $list->items();
|
||
|
$data = [];
|
||
|
foreach ($items as $k => &$v) {
|
||
|
$v['imagetype'] = strtolower($v['imagetype']);
|
||
|
$v['fullurl'] = cdnurl($v['url'], true);
|
||
|
$thumbUrl = addon_url("nkeditor/index/preview") . "?suffix=" . $v['imagetype'];
|
||
|
$data[] = [
|
||
|
'width' => $v['imagewidth'],
|
||
|
'height' => $v['imageheight'],
|
||
|
'filename' => $v['filename'],
|
||
|
'filesize' => $v['filesize'],
|
||
|
'oriURL' => $fullmode ? $v['fullurl'] : cdnurl($v['url']),
|
||
|
'thumbURL' => $v['fullurl'],
|
||
|
];
|
||
|
}
|
||
|
$result = [
|
||
|
'code' => '000',
|
||
|
'count' => $list->total(),
|
||
|
'page' => $page,
|
||
|
'pagesize' => $pagesize,
|
||
|
'extra' => '',
|
||
|
'data' => $data
|
||
|
];
|
||
|
return json($result);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 下载图片
|
||
|
*/
|
||
|
public function download()
|
||
|
{
|
||
|
$url = $this->request->request("url");
|
||
|
$contentType = '';
|
||
|
try {
|
||
|
$client = new Client();
|
||
|
$response = $client->request('GET', $url, ['stream' => true, 'verify' => false, 'allow_redirects' => ['strict' => true]]);
|
||
|
|
||
|
$body = $response->getBody();
|
||
|
$contentType = $response->getHeader('Content-Type');
|
||
|
$contentType = $contentType[0] ?? 'image/png';
|
||
|
} catch (\Exception $e) {
|
||
|
$this->error("图片下载失败");
|
||
|
}
|
||
|
|
||
|
$contentTypeArr = explode('/', $contentType);
|
||
|
if ($contentTypeArr[0] !== 'image') {
|
||
|
$this->error("只支持图片文件");
|
||
|
}
|
||
|
|
||
|
$response = new StreamedResponse(function () use ($body) {
|
||
|
while (!$body->eof()) {
|
||
|
echo $body->read(1024);
|
||
|
}
|
||
|
});
|
||
|
$response->headers->set('Content-Type', $contentType);
|
||
|
$response->send();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
public function get_map_config()
|
||
|
{
|
||
|
$config = get_addon_config('nkeditor');
|
||
|
$params = [
|
||
|
'baidumapkey' => $config['baidumapkey'] ?? ''
|
||
|
];
|
||
|
return json($params);
|
||
|
}
|
||
|
|
||
|
}
|