2013-10-01 40 views
0

我在Silverstripe 3中創建了一個站點,並且在將KMZ/KML文件上傳到CMS中時出現了一個奇怪的問題。如何啓用Silverstripe上傳KMZ/KML/GPX文件?

最終目標是允許CMS用戶將多個KMZ/KML/GPX文件上傳到頁面。這些文件將在Google地圖上顯示爲路線。

這是的has_many聲明:

static $has_many = array(
    'RouteFiles' => 'File' 
); 

這是getCMSFields代碼:

$routeFilesField = new UploadField('Route Files', 'Upload GPX/KMZ/KML files for your proposed route.', $this->RouteFiles()); 
$routeFilesField->getValidator()->allowedExtensions = array('kmz', 'kml', 'gpx'); 
$fields->addFieldToTab('Root.Map', $routeFilesField); 

我已經加入了擴展的/assets/.htaccess文件的FilesMatch部分。

當我上傳的KMZ或KML文件到CMS我得到在上傳字段下面的消息:找不到

文件信息還有什麼,我需要做的,使這項工作?

回答

1

添加以下到我的_config.php已經爲我工作:

File::$allowed_extensions[] = 'kmz'; 
File::$allowed_extensions[] = 'kml'; 
File::$allowed_extensions[] = 'gpx'; 

我沒有做任何事情都要讓這些文件類型。上傳字段起作用並鏈接到前端的文件。

+0

在SS 3.1中,調用'File :: $ allowed_extensions'會引發一個致命錯誤,因爲它是一個私有屬性。爲了解決這個問題,你可以使用配置系統來獲得擴展名('$ extensions = File :: config() - > allowed_extensions;'),添加你的項目('extensions [] ='kml';')和然後設置值('File :: config() - > allowed_extensions = $ extensions;')。 – Turnerj

+1

或者如您[在另一個答案](http://stackoverflow.com/a/25298213/1676444)中指定的那樣,您可以使用YAML配置文件添加其他允許的擴展名。 – Turnerj