I need to Upload .svg files. To do that I added \'svg\' to my config.yml, to the allowed extensions on upload field an to the .htacces in assets/. Also all my assets directo
Silverstripe (3.1) will not allow you to save a svg file as an Image data type.
It may be to do with the PHP GD library (I'm not sure), which the Silverstripe Image
class uses.
Instead, you can save a svg file as a File
data type.
To do this all you need is to add the svg file type to the File
allowed_extensions
in your yml config file (as you posted in your questions):
File:
allowed_extensions:
- svg
In your Page or DataObject class add the File
relation and set your 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;
}
In your page template you can use the file URL to load the svg as you like.
The problem "SyntaxError: Unexpected token <" is caused by an error being returned via HTML instead of a data stream in my experience. So I'd look at the contents of the network tab response and expect to see a stack trace with an error.
Here's a module to have SVG work as images in SilverStripe: https://github.com/micschk/silverstripe-svg-images/
See the README for general pointers on how to set up SVG-as-image if you don't want to require the module.