这里有点奇怪的问题。我最近开始在一个我最初没有构建的网站上进行维护。 Drupal站点有一堆带有音频文件字段的节点,以及一个播放它们的jQuery播放器。在播放器没有加载的很多节点上,我已经意识到这是因为当我编辑节点时,文件被报告为0字节。我不确定为什么会这样。起初我以为它可能是一个文件权限的东西,但我不认为这是因为权限对我来说很好。要修复它,我所要做的就是重新上传文件。问题是这些文件有数百个,如果可能的话,我只想通过进行一次更新来修复它。
答案 0 :(得分:3)
这是Terry的Drupal 7伪代码的工作版本。
$fids = db_query('SELECT fid FROM {file_managed} WHERE filesize = 0')->fetchCol();
foreach(file_load_multiple($fids) as $file) {
// Get full path to file.
$target = drupal_realpath($file->uri);
// If the file does not exist try the next file.
if (!file_exists($target)) {
echo "File $file->uri does not exist." .PHP_EOL;
continue;
}
// Find and store size of file
$file->filesize = filesize($target);
// Size of file is
if ($file->filesize > 0) {
file_save($file);
}
else {
echo "Size of $file->uri is still zero." . PHP_EOL;
}
}
用drush运行它:
drush php-script fix-file-sizes.php
答案 1 :(得分:1)
我们遇到了同样的问题:数据库中有很多0字节文件。 我们做了什么看起来像这样:
function update_my_filesizes() {
$fileIDs = db_query('SELECT fid FROM {file_managed) WHERE filesize = 0')->fetchCol();
foreach(file_load_multiple($fids) as $file) {
// determine size of file
$filesize = SIZE_OF_THE_FILE; (pseudocode, we had to use filesize())
$file->filesize = $filesize;
if($file->filesize > 0) {
file_save($file);
} else {
echo "Filesize for file <filename here> is still 0 :(";
}
}
}