Drupal 7 删除Drupal 8中的内容文件

Drupal 7 删除Drupal 8中的内容文件,drupal-7,drupal-8,Drupal 7,Drupal 8,我在删除Drupal 8上的文件时遇到问题。如何删除任何类型的文件,例如在我的例子中是图片文件(jpg、png等)。在Drupal 7中,您可以在右侧选择删除文件,但Drupal 8没有该选项…仅适用于已发布的页面。如果您不再需要文件,而不需要执行任何复杂的任务,是否有可能出于任何原因删除文件 我是一个Drupal初学者! 感谢Drupal 8中的无需该选项,因为有cron将自动运行以删除未使用的图像。Drupal 8管理界面中没有本机方法从Drupal中的文件上载程序中删除图像。但是,您可以安

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

我是一个Drupal初学者!
感谢Drupal 8中的无需该选项,因为有cron将自动运行以删除未使用的图像。

Drupal 8管理界面中没有本机方法从Drupal中的文件上载程序中删除图像。但是,您可以安装Drupal8IMCE模块,当您登录时,该模块将允许您访问文件系统。这样可以删除文件


这里是模块的链接

您可以从自定义模块中删除图像。这仅在Drupal 8.9中测试。首先让我解释一下图像处理过程,以便您更好地了解此解决方案是否适合您。fid存储在用于引用图像的自定义表的列中。它是名为file_managed的表中存储图像信息的主键。图像存储在“web/sites/default/files”文件夹中。根据您的Drupal安装情况,这可能有所不同。表_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;
}

我已经手动运行了Crone,但什么也没发生。它需要一些时间来通过还是什么?或者,如果我想保留一个文件供以后工作使用,但在任何地方都不能使用几天,该怎么办?如果文件的时间超过6小时,则在手动运行cron时会将其删除..cron只删除标记为“临时”的文件,而不是“永久”的文件。标记为“file.usage”的所有文件都是“永久”文件。即使该文件已从节点中删除且没有使用,也不会被删除。