Drupal 9文件操作指南

admin 提交于 周二, 01/04/2022 - 09:49

1. Drupal的文件目录分类

Drupal的文件API分为unmanaged file和managed file两种类型,managed file会在数据库中记录文件的信息及引用记录。

Drupal文件对象有一个uri属性,它的形式如public://myfile.jpg,通过file_create_url($file->uri)可以把uri转换成web可访问的路径,如http://howto.eguidedog.net/sites/default/files/myfile.jpg

Drupal内建了public、private和temporary流报装器(stream wrapper),PHP文件操作函数可以直接操作这些uri,例如我们可以通过filesize(‘public://myfile.jpg')获取文件大小,而不需要先转换成本地文件的地址。

Drupal中的private目录应该是放在一个不能直接从Web访问的目录,其内容通过PHP返回(这里有一个副作用是增加了系统开销)。

2. 怎样保存managed file类型文件

 

$entity_type = 'node';
$entity_id = 1; // Node ID,如果是考试,可以填考试ID。这个字段主要是标记文件和什么东西有关。不要填创建者的用户ID,因为这个信息在file_managed表里已经有了。
$fid = 1; // The file ID
$file = \Drupal\file\Entity\File::load($fid);
$file_usage = \Drupal::service('file.usage');
$file_usage->add($file, 'mymodule', $entity_type, $entity_id);

3. 怎样删除managed file类型文件

     

      $file_usage->delete($file, 'mymodule', $entity_type, $entity_id);

      $file = File::load($fid);
      if ($file) {
        $file->delete();
      }

参考:

添加新评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"汉语"