You are here

Drupal8私有文件配置

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2019-10-16 07:13

作者:亚艾元技术部

帮客户搭建一个内部文件管理系统,使用到Drupal的私有文件。Drupal的文件分两种形式,公开的,私有的;私有的,有完善的权限控制体系。

私有文件机制的启用,设置settings.php,并且修改它的权限,让对应目录可写。

$settings['file_private_path'] = '/home/www/privatefile';

 

这个时候,在文件系统的配置里面:/admin/config/media/file-system

可以看到私有文件系统路径的设置,设置成功了。

但是在默认的下载方式里面,还是只有:

公共本地文件送达网络服务器。

这一个选项。

我检查了一下这个页面对应的代码:

$options = $this->streamWrapperManager->getDescriptions(StreamWrapperInterface::WRITE_VISIBLE);
 
    if (!empty($options)) {
      $form['file_default_scheme'] = [
        '#type' => 'radios',
        '#title' => t('Default download method'),
        '#default_value' => $config->get('default_scheme'),
        '#options' => $options,
        '#description' => t('This setting is used as the preferred download method. The use of public files is more efficient, but does not provide any access control.'),
      ];
    }

 

实际这个目录已经可以写入,但是还是没有找到。我清除了一下缓存,重新回到文件系统配置页面:/admin/config/media/file-system:

这个时候多了一个配置选项:

由Drupal提供的本地私有文件。

 

选中它。来到Media类型的配置管理界面:/admin/structure/media

分别配置文件、图片字段的设置,设置页面

/admin/structure/media/manage/file/fields/media.file.field_media_file/storage

这里将上传目录改为私有文件目录。

 

修改nginx的配置,

    location ~* \.(txt|log)$ {
        deny all;
}

去掉这里的txt,我用来测试的txt文件就可以访问了。


论坛:

Drupal版本: