it-swarm.cn

如何获取附件文件的大小?

我正在使用以下模板代码来显示附件链接:

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    the_attachment_link($attachment->ID, false);
}

但在链接后我需要显示文件的大小。我怎样才能做到这一点?

我猜我可以确定文件的路径(通过wp_upload_dir()substr()wp_get_attachment_url())并调用filesize()但这看起来很乱,我只是想知道是否有一个内置于WordPress的方法。

34
Bobby Jack

据我所知,WordPress没有内置任何内容,我会这样做:

filesize( get_attached_file( $attachment->ID ) );

41
Joe Hoyle

我之前在functions.php中使用过这个,以易于阅读的格式显示文件大小:

function getSize($file){
$bytes = filesize($file);
$s = array('b', 'Kb', 'Mb', 'Gb');
$e = floor(log($bytes)/log(1024));
return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));}

然后在我的模板中:

echo getSize('insert reference to file here');
10
davemac

我愿意:

$attachment_filesize = filesize( get_attached_file( $attachment_id ) );

或者像423.82 KB这样的可读大小

$attachment_filesize = size_format( filesize( get_attached_file( $attachment_id ) ), 2 );

Refs: get_attached_file()filesize()size_format()

注意: 定义你的$attachment_id

5
l2aelba

有一个更简单的解决方案,以获得人类可读的文件大小。

$attachment_id  = $attachment->ID;
$attachment_meta = wp_prepare_attachment_for_js($attachment_id);

echo $attachment_meta['filesizeHumanReadable'];
3
Zoltan Kiraly

要查找通过自定义字段插件添加的文件的大小,我这样做了:

$fileObject = get_field( 'file ');
$fileSize   = size_format( filesize( get_attached_file( $fileObject['id'] ) ) );

只需确保将自定义字段的“返回值”设置为“文件对象”。

3

至少对于音频,文件大小保存为“元数据”。

$metadata = wp_get_attachment_metadata( $attachment_id );
echo $metadata['filesize'];

这个 可能不是 是图像和视频的情况。

1
henrywright

我一直在寻找相同的,并找到了这个WordPress内置的解决方案。

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    $attachment_id = $attachment->ID;
    $image_metadata = wp_get_attachment_metadata( $attachment_id );
    the_attachment_link($attachment->ID, false);
    echo the_attachment_link['width'];
    echo the_attachment_link['height'];
}

查看更多 wp_get_attachment_metadata()

1
Vayu