将文件扩展名添加到 OctoberCMS 中文件上传的允许列表?

Adding file extension to allowed list for file uploads in OctoberCMS?

问题出在 Assets[=28] 的 File Manager 中的 OctoberCMS 后端=],我在尝试上传 SVG 文件时收到以下错误消息:

Error uploading file 'logo.svg': Only the following file types are allowed: jpg, jpeg, bmp, png, webp, gif, ico, css, js, woff, woff2, ttf, eot, json, md, less, sass, scss

错误消息由 AssetList.php 生成并引用 October\Rain\Filesystem 中的函数 getDefinitions($type)

    /**
     * Returns a definition set from config or from the default sets.
     * @param $type string
     * @return array
     */
    public function getDefinitions($type)
    {
        if (!method_exists($this, $type)) {
            throw new Exception(sprintf('No such definition set exists for "%s"', $type));
        }

        return (array) Config::get('cms.fileDefinitions.'.$type, $this->$type());
    }

我在 /config/cms.php 中找不到任何对 'fileDefinitions' 的引用。

如何在不丢失现有文件类型列表的情况下将 SVG 添加到允许的文件定义数组。

为什么不直接将密钥 'fileDefinitions' 添加到配置文件中?由于 October 是基于 laravel,因此获取配置的方式与 here 相同;也就是说,Config::get() 具有与 Laravel 相同的参数列表:Config::get($stringPath, $default = null);.

根据 the file you reference 的内容,或者至少是我能找到的与您引用的最接近的文件,$type() 变量变量指向第 97、149 行等中的任何一行。其 return 值是一个简单的扩展数组。

长话短说,在 /config/cms.php 中,创建一个新的数组键 fileDefinitions 并将其值设置为 ['svg'],以及您想要的任何其他扩展.但是请注意该文件中用于确定应允许上传的内容的逻辑。

安全风险

另请注意,SVG 已从这些数组中删除,因为它被视为 security risk

要上传 我创作 并且知道不包含嵌入的 CSS 和 Javascript 等恶意代码的 SVG,我将以下内容添加到配置的底部:/config/cms.php.

    /*
    |--------------------------------------------------------------------------
    | File extensions list for allowed file uploads
    |--------------------------------------------------------------------------
    */

    'fileDefinitions' => [

        'assetExtensions' => [
            'svg', 'jpg', 'jpeg', 'bmp', 'png', 'webp', 'gif', 'ico', 'css', 'js', 'woff', 'woff2', 'ttf', 'eot', 'json', 'md', 'less', 'sass', 'scss'
        ],
    ],

保存,然后执行清除缓存的命令,问题解决。

$ php artisan config:clear