मैं अटैचमेंट फ़ाइल का आकार कैसे प्राप्त करूं?


34

अनुलग्नक लिंक प्रदर्शित करने के लिए मैं निम्नलिखित टेम्पलेट कोड का उपयोग कर रहा हूं:

$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()लेकिन वह गंदा लगता है, और मैं बस वहाँ एक विधि वर्डप्रेस में बनाया गया है, तो सोच रहा हूँ।


दिलचस्प बात यह है कि, विवरण में और न ही सूची में फ़ाइल वेदर के आकार को प्रदर्शित करने के लिए बैकएंड में कोई कार्यक्षमता नहीं है। टिकट # 8739
हैकर

जवाबों:


42

जहाँ तक मुझे पता है, वर्डप्रेस के पास इसके लिए कुछ भी नहीं है, मैं बस यही करूँगा:

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


आह - कि wp_upload_dir()आदि के साथ खिलवाड़ करने से बहुत बेहतर लगता है !
बॉबी जैक

मुझे केवल एक पोस्ट अटैचमेंट फ़ाइल आकार प्राप्त करने की आवश्यकता है। मैंने post_parent में get_the_ID () का उपयोग किया। लेकिन कोई फायदा नहीं।
करशो

10

मैंने इसे पहले फ़ंक्शन में उपयोग किया है। आसानी से पढ़ने योग्य प्रारूप में फ़ाइल का आकार प्रदर्शित करने के लिए।

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

8
कोई नया फ़ंक्शन बनाने की आवश्यकता नहीं है। WP में कोर में निर्मित दो हैं। size_format()औरwp_convert_bytes_to_hr()
ब्रैडी

8
ऐसा लगता है कि wp_convert_bytes_to_hr () अब size_format () के पक्ष में पदावनत हो गया है
davemac

5

मुझे क्या करना होगा :

$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


3

कस्टम फ़ील्ड प्लगइन के माध्यम से जोड़ी गई फ़ाइल का आकार खोजने के लिए, मैंने यह किया:

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

बस सुनिश्चित करें कि आपने "फ़ाइल ऑब्जेक्ट" के लिए कस्टम फ़ील्ड का "रिटर्न मान" सेट किया है।


3

मानव पठनीय फ़ाइल आकार प्राप्त करने के लिए एक आसान उपाय है।

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

echo $attachment_meta['filesizeHumanReadable'];

वहाँ सब कुछ के लिए एक wp_ funktion ;-)
थॉमस फेलिंगर

स्वीकृत उत्तर होना चाहिए
user1676224

1

मैं उसी की तलाश में था और इस वर्डप्रेस को बिल्ट-इन समाधान मिला।

$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()


2
प्रश्न फ़ाइल के आकार के बारे में है जैसे बाइट की संख्या में, छवि आयामों में नहीं।
रारस्ट जूल 5'11

दोहा, मुझे याद है कि पढ़ा। :-)
वायु

1

कम से कम ऑडियो के लिए, फ़ाइल का आकार "मेटाडेटा" के रूप में सहेजा जाता है।

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

यह छवियों और वीडियो के मामले में नहीं हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.