it-swarm-id.com

Bagaimana cara saya mendapatkan ukuran file lampiran?

Saya menggunakan kode templat berikut untuk menampilkan tautan lampiran:

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

tapi setelah tautan saya perlu menampilkan ukuran file. Bagaimana saya bisa melakukan ini?

Saya kira saya bisa menentukan jalur file (via wp_upload_dir() dan substr() dari wp_get_attachment_url()) dan memanggil filesize() tapi itu tampak berantakan, dan saya hanya ingin tahu apakah ada metode yang dibangun ke WordPress.

34
Bobby Jack

Sejauh yang saya tahu, WordPress tidak memiliki bawaan untuk ini, saya hanya akan melakukan:

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

41
Joe Hoyle

Saya telah menggunakan ini sebelumnya di functions.php untuk menampilkan ukuran file dalam format yang mudah dibaca:

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

Dan kemudian di templat saya:

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

Saya akan lakukan:

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

Atau dengan ukuran yang dapat dibaca seperti 423.82 KB

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

Referensi: get_attached_file () , filesize () , size_format ()

Catatan: Tentukan $attachment_id Anda

5
l2aelba

Ada solusi yang lebih mudah, untuk mendapatkan ukuran file yang dapat dibaca manusia.

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

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

Untuk menemukan ukuran file yang ditambahkan melalui plugin bidang khusus, saya melakukan ini:

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

Pastikan Anda mengatur "Nilai Pengembalian" bidang khusus ke "File Object".

Untuk audio setidaknya, ukuran file disimpan sebagai "metadata".

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

Ini mungkin tidak merupakan kasus untuk gambar dan video.

1
henrywright

Saya mencari yang sama dan menemukan solusi bawaan WordPress ini.

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

Lihat lebih lanjut di wp_get_attachment_metadata()

1
Vayu