it-swarm.com.de

Wie erhalte ich die Größe einer Anhangsdatei?

Ich verwende den folgenden Vorlagencode, um Anhang-Links anzuzeigen:

$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);
}

aber nach dem Link muss ich die Dateigröße anzeigen. Wie kann ich das machen?

Ich vermute, ich könnte den Pfad der Datei (über wp_upload_dir() und eine substr() von wp_get_attachment_url()) bestimmen und filesize() aufrufen, aber das scheint chaotisch zu sein, und ich frage mich nur, ob es eine in WordPress integrierte Methode gibt.

34
Bobby Jack

Soweit ich weiß, hat WordPress nichts dafür eingebaut, ich würde einfach tun:

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

41
Joe Hoyle

Ich habe dies zuvor in functions.php verwendet, um die Dateigröße in einem leicht lesbaren Format anzuzeigen:

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))));}

Und dann in meiner Vorlage:

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

Ich würde tun:

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

Oder mit lesbarer Größe wie 423.82 KB

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

Refs: get_attached_file () , filesize () , size_format ()

Hinweis: Definiere deinen $attachment_id

5
l2aelba

Es gibt eine einfachere Lösung, um lesbare Dateigrößen zu erhalten.

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

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

Um die Größe einer Datei zu ermitteln, die über das Plugin für benutzerdefinierte Felder hinzugefügt wurde, habe ich Folgendes ausgeführt:

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

Stellen Sie einfach sicher, dass Sie den "Rückgabewert" des benutzerdefinierten Felds auf "Dateiobjekt" setzen.

Zumindest für Audio wird die Dateigröße als "Metadaten" gespeichert.

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

Dies ist möglicherweise nicht bei Bildern und Videos der Fall.

1
henrywright

Ich suchte das Gleiche und fand diese in WordPress integrierte Lösung.

$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'];
}

Weitere Informationen finden Sie unter wp_get_attachment_metadata()

1
Vayu