【问题标题】:How do I enable the uploading of KMZ/KML/GPX files in Silverstripe?如何在 Silverstripe 中启用 KMZ/KML/GPX 文件的上传?
【发布时间】:2013-10-01 00:42:42
【问题描述】:

我正在 Silverstripe 3 中设置一个站点,但在将 KMZ/KML 文件上传到 CMS 时遇到了一个奇怪的问题。

最终目标是允许 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 时,我在上传字段中收到以下消息:

找不到文件信息

我还需要做什么才能完成这项工作?

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    将以下内容添加到我的_config.php 对我有用:

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

    我不需要做任何其他事情来允许这些文件类型。上传字段有效,并且链接到前端的文件有效。

    【讨论】:

    • 在 SS 3.1 中,调用 File::$allowed_extensions 会引发致命错误,因为它是私有属性。为了解决这个问题,您可以使用配置系统获取扩展名 ($extensions = File::config()->allowed_extensions;),添加您的项目 ($extensions[] = 'kml';),然后将值设置回 (File::config()->allowed_extensions = $extensions;)。
    • 或者您指定in another answer,您可以使用 YAML 配置文件添加额外的允许扩展。
    【解决方案2】:

    此消息表示上传到临时上​​传文件夹失败。您应该检查文件夹是否可写或更改它,请参阅http://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多