我们在上传到我们某个网站的PDF中遇到了一些严重错误。 但在"删除"它来自Drupal,它仍然可以通过直接链接访问。 Drupal似乎没有自己删除它。
我仍然可以在表file_managed中找到它,但不能在file_usage中找到它。 手动删除数据库行和文件是否安全?
已经在SO上检查过所有旧问题,但没有一个可以使用。
谢谢!
答案 0 :(得分:2)
我们最近贡献了一个模块 Unmanaged / Unused Files | Manage | Delete
答案 1 :(得分:0)
您可能想尝试Fancy File Delete,其中包含以下选项
从默认文件目录中删除未在文件托管表中的未使用文件。 AKA删除所有非托管文件。
从整个安装中删除不再附加到节点的未使用文件&文件使用表。 AKA删除所有孤立的文件。
答案 2 :(得分:0)
我知道这是一篇过时的文章,但是我遇到了同样的问题,没有找到好的答案。
因此,在尝试了一些错误之后,我想到了这一点:
<?php
// Some nice ideas from:
// https://stackoverflow.com/questions/52455491/how-to-set-file-usage-on-drupal-8
$file_storage = \Drupal::entityTypeManager()->getStorage('file');
$fids = Drupal::entityQuery('file')->condition('status', 1)->execute();
$file_usage = Drupal::service('file.usage');
foreach ($fids as $fid) {
$file = Drupal\file\Entity\File::load($fid);
$usage = $file_usage->listUsage($file);
if(count($usage) == 0) {
$file->delete();
}
}
请注意,代码依赖于Drupal报告使用该文件的正确节点数,而这种情况可能无法解决。
希望这对其他人来说可能是有用的,如果不是sbo的话。