当前位置:首页 > php > DiscuzQ在Linux下后台全局设置无法上传图片问题解决

DiscuzQ在Linux下后台全局设置无法上传图片问题解决

原创 2020-07-20 php 462

admin-logo-x2 (1).png

Linux下后台全局配置无法上传图片,可以修改项目下的文件

app\Api\Controller\Settings\UploadLogoController.php

将 data 方法修改成如下:

    protected function data(ServerRequestInterface $request, Document $document) {
        $actor = $request->getAttribute('actor');
        $this->assertCan($actor, 'setting.site');
        UrlGenerator::setRequest($request);
        $type = Arr::get($request->getParsedBody(), 'type', 'logo');
        $file = Arr::get($request->getUploadedFiles(), 'logo');
        $document_root = Arr::get($request->getServerParams(), 'DOCUMENT_ROOT');
        $verifyFile = new UploadedFile(
                $file->getStream()->getMetadata('uri'),
                $file->getClientFilename(),
                $file->getClientMediaType(),
                $file->getError(),
                true
        );
        $mimes = [
            'watermark_image' => 'mimes:png',
            'favicon' => 'mimes:jpeg,jpg,png,bmp,gif,ico,svg',
        ];
        $this->validator->make(
                ['type' => $type, 'logo' => $verifyFile],
                [
                    'type' => [Rule::in($this->allowTypes)],
                    'logo' => [
                        'required',
                        $mimes[$type] ?? 'mimes:jpeg,jpg,png,bmp,gif',
                        'max:5120'
                    ]
                ]
        )->validate();
        $fileName = $type . '.' . $verifyFile->getClientOriginalExtension();
        try {
            move_uploaded_file($file->getStream()->getMetadata('uri'), $document_root . DIRECTORY_SEPARATOR . "storage" . DIRECTORY_SEPARATOR . $fileName);
        } catch (Exception $e) {
            throw new $e;
        }
        $this->settings->set($type, $fileName, $type === 'watermark_image' ? 'watermark' : 'default');
        return [
            'key' => 'logo',
            'value' => $this->url->to('/storage/' . $fileName) . '?' . Carbon::now()->timestamp,
            'tag' => 'default'
        ];
    }

保存后重试

声明:版权所有,违者必究 | 如未注明,均为原创 | 本网站采用 BY-NC-SA 协议进行授权

转载:转载请注明原文链接,违者必究 - :https://www.wolfcode.net/info/200/

分享给朋友:

相关文章

ThinkPHP6.0使用EasyTask常驻内存多进程任务管理

PHP常驻内存的多进程任务管理器Composer包。以进程管理为出发点,同时也支持为每个进程设置定时执行功能,您可以用它来完成需要重复运行的任务(如订单超时自动取消,短信邮件异步推送,队列/消费者/频道订阅者等等),甚至处理计划任务。

PHP8新特性盘点

PHP 8.0.0 已经正式发布了,这个对于PHPer无疑是一个令人振奋的消息。它包含了很多新功能与优化项, 包括命名参数、联合类型、注解、构造器属性提升、match表达式、nullsafe运算符、JIT,并改进了类型系统、错误处理、语法一致性。

PHP8新特性系列:构造器属性提升使用及注意事项

本篇主要说下PHP8构造器属性提升的用法,这个特性对于一些需要在构造器中设置或初始化一些类属性的时候非常有用(包括public、protected和private),比如在PHP7中你可以这样定义一个类的属性,然后在构造方法中传值。class Point {  &nb

2020年底,博客又重构了!PHP8.0+Golang

从vue脱坑了,本来是想升级vue3.0来玩玩的,但是看到3.0的语法,跟2.0完全不是一个层面的,你可以理解为 new vue!!!而且有点不太习惯了~~~刚好PHP8.0的到来,索性直接上了8.0,因为之前服务器编译的PHP是7.3,也不想去升级影响其他服务,所以直接挂在了docker上,目前直

ThinkPHP6.0在PHP8下报错解决方法

PHP8下全新安装ThinkPHP6.0.X出现报错,如下Deprecated: Method ReflectionParameter::getClass() is deprecated in xxxx\vendor\topthink\fr

MongoDB驱动聚合查询aggregate在分组分页排序后出现的数据混乱问题

最近在获取MongoDB数据时需要把重复的数据分组来排序,语言版本:PHP7

PHP依赖管理工具composer 2.0正式发布

composer 2.0 现在已更新!性能改进说明(英文)https://blog.packagist.com/composer-2-0-is-now-available/1.有什么新功能?对于命令行(CLI)用户新的平台检查功能检查运行时 PHP 版本和可用扩展,以确保它们与项目依赖项匹配。如果发

2020年度最受欢迎中国开源软件评选【投Thinkphp一票否】

评选活动分为「最佳人气项目」、「优秀 Gitee 组织」及「最积极运营项目」等子类,本页面用于投票选出「最佳人气项目」;