我需要上传.svg文件。为此,我添加了' svg'到我的config.yml,上传字段允许的扩展名为assets /中的.htacces。此外,我的所有资产目录都有CHMOD 777.
文件已上传但未附加。而不是我在上传字段中收到此错误 SyntaxError:意外的令牌<
File:
allowed_extensions:
- svg
Image:
allowed_extensions:
- svg
$logo->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif', 'svg'));
Deny from all
<FilesMatch "\.(?i:html|htm|xhtml|js|css|bmp|png|gif|jpg|jpeg|ico|pcx|tif|tiff|au|mid|midi|mpa|mp3|ogg|m4a|ra|wma|wav|cda|avi|mpg|mpeg|asf|wmv|m4v|mov|mkv|mp4|ogv|webm|swf|flv|ram|rm|doc|docx|txt|rtf|xls|xlsx|pages|ppt|pptx|pps|csv|cab|arj|tar|zip|zipx|sit|sitx|gz|tgz|bz2|ace|arc|pkg|dmg|hqx|jar|xml|pdf|gpx|kml|svg)$">
Allow from all
</FilesMatch>
答案 0 :(得分:6)
Silverstripe(3.1)不允许您将 svg 文件另存为图像数据类型。
这可能与Silverstripe Image
类使用的PHP GD library(我不确定)有关。
相反,您可以将 svg 文件另存为File
数据类型。
要做到这一点,您只需将 svg 文件类型添加到yml配置文件中的File
allowed_extensions
(正如您在问题中发布的那样):< / p>
File:
allowed_extensions:
- svg
在您的Page或DataObject类中添加File
关系并设置UploadField
:
private static $has_one = array(
'SVGFile' => 'File'
);
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.SVG', UploadField::create('SVGFile', 'SVG File'));
return $fields;
}
在您的页面模板中,您可以使用文件URL根据需要加载svg。
答案 1 :(得分:1)
这是一个让SVG在SilverStripe中作为图像工作的模块:https://github.com/micschk/silverstripe-svg-images/
如果您不想要模块,请参阅README以获取有关如何设置SVG-as-image的一般指示。
答案 2 :(得分:1)
问题&#34;语法错误:意外的令牌&lt;&#34;是由我的经验中通过HTML而不是数据流返回的错误引起的。因此,我要查看网络选项卡响应的内容,并希望看到有错误的堆栈跟踪。