Wie erhalte ich die Größe einer Anhangsdatei?

Ich verwende den folgenden Vorlagencode, um Anhangslinks 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 Größe der Datei anzeigen. Wie kann ich das machen?

Ich vermute, ich konnte den Pfad der Datei (über wp_upload_dir() und ein substr() von wp_get_attachment_url() ) ermitteln und filesize() aufrufen, aber das scheint chaotisch, und ich frage mich nur, ob es eine Methode in WordPress eingebaut ist.

Solutions Collecting From Web of "Wie erhalte ich die Größe einer Anhangsdatei?"

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

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

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

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

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

Stellen Sie nur sicher, dass Sie den “Rückgabewert” des benutzerdefinierten Felds auf “Dateiobjekt” setzen.

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

Ich war auf der Suche nach dem gleichen und fand diese 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 wp_get_attachment_metadata() unter wp_get_attachment_metadata()

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: Definieren Sie Ihre $attachment_id

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

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

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