Index.php
3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?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'];
if ($fileType == 'image') {
$type = $imageSuffix;
} else if ($fileType == 'flash') {
$type = ['swf', 'flv'];
} else if ($fileType == 'media') {
$type = ['swf', 'flv', 'mp4', 'mpeg', 'mp3', 'wav', 'ogg', 'acc', 'webm'];
} else if ($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);
$items = $list->items();
$data = [];
foreach ($items as $k => &$v) {
$v['imagetype'] = strtolower($v['imagetype']);
$v['fullurl'] = cdnurl($v['url'], true);
$data[] = [
'width' => $v['imagewidth'],
'height' => $v['imageheight'],
'filesize' => $v['filesize'],
'oriURL' => $v['fullurl'],
'thumbURL' => !in_array($v['imagetype'], $imageSuffix) ? "https://tool.fastadmin.net/icon/{$v['imagetype']}.png" : $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]);
$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);
return $response->send();
}
}