<?php
declare(strict_types=1);
namespace app\controller\sys;
use think\facade\Config;
use think\file\UploadedFile;
use think\exception\ValidateException;
use app\utils\ReUtils;
use app\utils\FileUtils;
use think\facade\Env;
/**
* upload文件管理
*
* @version 0.0.0
* @author by huwhois
* @time 2017/11/27
*/
class FileManager extends Base
{
protected $modelName = 'FileManager';
public function uploadImage()
{
if ($this->app->request->isPost()) {
$file = $this->request->file('upload_file');
if ($file) {
try {
validate(
[
'file' => [
// 限制文件大小(单位b),这里限制为4M
'fileSize' => 4 * 1024 * 1024,
// 限制文件后缀,多个后缀以英文逗号分割
'fileExt' => 'jpg,png,gif,jpeg,webp,jfif'
]
],
[
'file.fileSize' => '文件太大',
'file.fileExt' => '不支持的文件后缀',
]
)->check(['file' => $file]);
$picture_url = Config::get('filesystem.disks.public.url') . '/';
$watermark = $this->request->has('watermark') ? intval($this->request->param('watermark')) : 1;
if ($watermark == 0) {
$savename = \think\facade\Filesystem::disk('public')->putFile('/', $file);
} else {
$source = str_replace("\\", '/', $this->app->getRootPath() . Env::get('watermark', 'public/static/images/watermark.png'));
if (!is_file($source)) {
$savename = \think\facade\Filesystem::disk('public')->putFile('/', $file);
} else {
$savename = $file->hashName();
$savepath = str_replace("\\", '/', Config::get('filesystem.disks.public.root') . DIRECTORY_SEPARATOR . $savename);
$dir = dirname($savepath);
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$image = \think\Image::open($file);
$image->water($source);
$image->save($savepath);
$image = null;
}
}
return ReUtils::result([
'filename' => $picture_url . str_replace("\\", '/', $savename)
], 0, '上传成功');
} catch (ValidateException $e) {
$this->error($e->getMessage());
}
}
}
}
/**
* 网络图片上传
*/
public function uploadUrlImg()
{
if ($this->request->isPost()) {
$url_file = $this->request->param('url_file');
$urlImgs = explode("\n", $url_file);
if (!empty($urlImgs)) {
try {
$filelist = [];
$url_path = Config::get('filesystem.disks.public.url');
foreach ($urlImgs as $urlImg) {
if ($urlImg) {
$savename = FileUtils::downloadUrlImg($urlImg);
$filelist[] = $url_path . '/' . $savename;
}
}
return ReUtils::result($filelist);
} catch (\think\exception\ValidateException $e) {
return ReUtils::error($e->getMessage());
}
} else {
return ReUtils::error('图片地址不能为空');
}
}
}
/**
* 附件上传
*/
public function uploadMoive()
{
$file = $this->request->file('upload_movie');
if ($file) {
try {
validate(
[
'file' => [
// 限制文件大小(单位b),这里限制为20M
'fileSize' => 20 * 1024 * 1024,
// 限制文件后缀,多个后缀以英文逗号分割
'fileExt' => 'mp4,flv,mpeg,avi'
]
],
[
'file.fileSize' => '文件太大',
'file.fileExt' => '不支持的文件后缀',
]
)->check(['file' => $file]);
$savename = \think\facade\Filesystem::disk('public')->putFile('/', $file);
$url_path = Config::get('filesystem.disks.public.url');
return ReUtils::result([
'filename' => $url_path . "/" . str_replace("\\", '/', $savename)
], 0, '上传成功');
} catch (ValidateException $e) {
return ReUtils::error($e->getMessage());
}
} else {
return ReUtils::error('视频不能为空');
}
}
/**
* 附件上传
*/
public function uploadFile()
{
$activepath = $this->request->has('activepath') ? $this->request->param('activepath') : '';
$files = $this->request->file('upload_file');
if ($files) {
try {
validate(
[
'file' => [
// 限制文件大小(单位b),这里限制为10M
'fileSize' => 10 * 1024 * 1024,
// 限制文件后缀,多个后缀以英文逗号分割
'fileExt' => 'jpg,png,gif,jpeg,webp,jfif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip'
]
],
[
'file.fileSize' => '文件太大',
'file.fileExt' => '不支持的文件后缀',
]
)->check(['file' => $files]);
$uploadFiles = [];
if (!is_array($files) && $files instanceof UploadedFile) {
$uploadFiles[] = $files;
} else {
$uploadFiles = $files;
}
$url = Config::get('filesystem.disks.public.url');
$filelist = [];
foreach ($uploadFiles as $file) {
$savename = \think\facade\Filesystem::disk('public')->putFile('/', $file);
$filename = $file->getOriginalName();
$filelist[] = [
'url' => $url . '/' . $savename,
'filename' => $filename
];
}
return ReUtils::result($filelist);
} catch (ValidateException $e) {
return ReUtils::error($e->getMessage());
}
} else {
return ReUtils::error('图片不能为空');
}
}
/**
* ckeditor 富文本编辑器上传图片
*/
public function ckeditorUploadImage()
{
if ($this->request->isPost()) {
$file = $this->request->file('upload');
if ($file) {
try {
validate(
[
'file' => [
// 限制文件大小(单位b),这里限制为4M
'fileSize' => 4 * 1024 * 1024,
lly202406
- 粉丝: 3261
- 资源: 5572
最新资源
- HTML5实现好看的清洁服务公司网站模板.zip
- HTML5实现好看的墙壁粉刷公司网站源码.zip
- HTML5实现好看的清爽创意家居网站源码.zip
- HTML5实现好看的清爽大屏饼干制作网站源码.zip
- HTML5实现好看的清爽家政公司网站源码.zip
- HTML5实现好看的清新的教育机构网站源码.zip
- 重庆邮电大学信号处理实验三
- WINCC的SQL应用,无需修改任何源码, 导入变量即可自动生成配方报表 配方报表,vbs应用,配方应用 学习利器,可供有需要学习的朋友学习, 源码公开, 配合SQLSERVER使用
- 基于卷积神经网络(CNN)的手写数字识别 matlab代码,要求2018版本及以上
- 重庆邮电大学信号处理实验四代码
- 基于SSM框架的家庭健康管理系统+Java、HTML+家庭健康管理、健康指标管理
- 基于c代码的空间电压矢量svpwm算法simulink仿真: 1.svpwm的c代码为实际工程中使用和验证过,代码简洁,注释详细; 2.采用7段式svpwm,有过调机制处理; 3.送svpwm原理详
- fpga sata 2.0 3.0源码,纯verilog代码,根据不同的平台,支持gtx gth gty平台
- 堆垛机西门子PLC程序+输送线程序 物流仓储 涵盖通信,算法,运动控制,屏幕程序,可电脑仿真测试 实际项目完整程序 西门子S7-1200+G120+劳易测激光测距 博途V15.1编程 采用SC
- 基于SSM框架的家庭健康管理系统论文+Java、SSM、MySQL+健康管理、指标管理
- carsim与simulink联合仿真的线控转向系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈