it-swarm-vi.tech

Làm cách nào để có được kích thước của tệp đính kèm?

Tôi đang sử dụng mã mẫu sau để hiển thị các liên kết đính kèm:

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

nhưng sau liên kết tôi cần hiển thị kích thước của tập tin. Tôi có thể làm cái này như thế nào?

Tôi đoán rằng tôi có thể xác định đường dẫn của tệp (thông qua wp_upload_dir()substr() của wp_get_attachment_url()) và gọi filesize() nhưng điều đó có vẻ lộn xộn và tôi chỉ tự hỏi liệu có phương pháp nào được tích hợp trong WordPress không.

34
Bobby Jack

Theo như tôi biết, WordPress không có gì được xây dựng cho việc này, tôi sẽ chỉ làm:

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

41
Joe Hoyle

Tôi đã sử dụng điều này trước đây trong Hàm.php để hiển thị kích thước tệp ở định dạng dễ đọc:

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

Và sau đó trong mẫu của tôi:

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

Tôi sẽ làm:

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

Hoặc với kích thước có thể đọc được như 423.82 KB

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

Tham chiếu: get_attached_file () , filesize () , size_format ()

Lưu ý: Xác định $attachment_id của bạn

5
l2aelba

Có một giải pháp dễ dàng hơn, để có được kích thước tệp có thể đọc được của con người.

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

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

Để tìm kích thước của tệp được thêm thông qua plugin trường tùy chỉnh, tôi đã làm điều này:

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

Chỉ cần đảm bảo rằng bạn đặt "Giá trị trả về" của trường tùy chỉnh thành "Đối tượng tệp".

Đối với âm thanh ít nhất, kích thước tệp được lưu dưới dạng "siêu dữ liệu".

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

Điều này có thể không là trường hợp cho hình ảnh và video.

1
henrywright

Tôi đã tìm kiếm tương tự và tìm thấy giải pháp tích hợp WordPress này.

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

Xem thêm tại wp_get_attachment_metadata()

1
Vayu