【问题标题】:Deleting Content Files in Drupal 8在 Drupal 8 中删除内容文件
【发布时间】:2018-12-10 07:55:25
【问题描述】:

我在删除 Drupal 8 上的文件时遇到问题。如何删除任何类型的文件,例如在我的情况下是图片文件(jpg、png 等...)。在 Drupal 7 中,您可以在右侧选择删除文件,但 Drupal 8 没有该选项...仅适用于已发布的页面。如果您不再需要它们,是否有机会出于任何原因删除文件,而无需执行任何复杂的任务?

P.S:我是 Drupal 初学者! 谢谢

【问题讨论】:

    标签: drupal-7 drupal-8


    【解决方案1】:

    在 Drupal 8 中不需要该选项,因为有 cron 会自动运行以删除未使用的图像。

    【讨论】:

    • 我手动运行了Crone,但没有任何反应。是不是需要一些时间才能过去?或者如果我想保留一个文件以供以后工作,但在任何地方都没有使用几天怎么办?
    • 如果文件超过 6 小时,手动运行 cron 时将被删除..
    • Cron 只删除标记为“临时”的文件,而不是“永久”文件。任何被“file.usage”标记为使用的文件都是“永久”文件。即使文件从节点中删除并且使用次数为零,也不会被删除。
    【解决方案2】:

    Drupal 8 管理界面没有本地方法可以从 Drupal 中的文件上传器中删除图像。但是,您可以安装 Drupal 8 IMCE 模块,它可以让您在登录时访问文件系统。这样您就可以删除文件。

    这是该模块的链接。 https://www.drupal.org/project/imce

    【讨论】:

      【解决方案3】:

      您可以从自定义模块中删除图像。这仅在 Drupal 8.9 中进行了测试。首先让我解释一下图像处理,以便您更好地了解此解决方案是否适合您。 fid 存储在您用于引用图像的自定义表的列中。它是存储图像信息的名为 file_managed 的​​表中的主键。图像存储在“web/sites/default/files”文件夹中。根据您的 Drupal 安装,这可能会有所不同。 table_usage 存储图像在站点上的使用情况。当您擦除图像时,您需要从所有三个表 file_managed、file_usage 和您的表中擦除带有图像 fid 的行。然后当然取消链接您的图像。

          /**
       * Removes an image.
      *
      * @param $fid
      * @return boolean
      */
      public function removeImage($fid) {
          if ( empty($fid) || !preg_match('/^[0-9]+$/', trim($fid)) ) return FALSE;
      
          // Im assigning the $this->database property an instance of Connection
          $result = $this->database->query("SELECT uri FROM {file_managed} where fid=:fid", [':fid' => $fid])->fetchCol();
      
          $absolute_path = \Drupal::service('file_system')->realpath($result[0]);
          if(isset($absolute_path)) unlink($absolute_path);
          //var_dump($absolute_path); exit();
      
          $this->database->delete('file_managed')
              ->condition('fid', $fid)
              ->execute(); 
              
          $this->database->delete('file_usage')
              ->condition('fid', $fid)
              ->execute();
      
          return true;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        • 2012-06-20
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多