文件字段显示我以前上传的文件是0字节

时间:2012-07-16 20:54:17

标签: drupal drupal-7 drupal-files

这里有点奇怪的问题。我最近开始在一个我最初没有构建的网站上进行维护。 Drupal站点有一堆带有音频文件字段的节点,以及一个播放它们的jQuery播放器。在播放器没有加载的很多节点上,我已经意识到这是因为当我编辑节点时,文件被报告为0字节。我不确定为什么会这样。起初我以为它可能是一个文件权限的东西,但我不认为这是因为权限对我来说很好。要修复它,我所要做的就是重新上传文件。问题是这些文件有数百个,如果可能的话,我只想通过进行一次更新来修复它。

2 个答案:

答案 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 :(";
        }
    }
}
相关问题