将文件扩展名添加到 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
问题出在 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