Silverstripe 3.1.5 - 上传错误SyntaxError:意外的令牌<

时间:2014-08-08 06:59:59

标签: silverstripe

我需要上传.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>

3 个答案:

答案 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而不是数据流返回的错误引起的。因此,我要查看网络选项卡响应的内容,并希望看到有错误的堆栈跟踪。