2010-09-27 9 views
7

मैं Googleिंग कर रहा हूं लेकिन मुझे जो भी मिलता है वह getimagesize और filesize है।
getimagesize dosent केबी आकार केवल चौड़ाई और ऊंचाई प्राप्त करें जो मैं नहीं देख रहा हूं।
फ़ाइल आकार मुझे दे संदेश चेतावनी: फ़ाइल आकार() [function.filesize]: स्टेट
सवाल में फ़ाइल के लिए असफल है 51kb .jpg फ़ाइलphp को छवि का KB आकार प्राप्त करें

$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

काम नहीं करता,

मैं इसे कैसे पूरा करूं?

+0

पीएचपी का कौन सा संस्करण उपयोग कर रहे हैं? – pascal

+0

शायद [यह सवाल] देखें (http://stackoverflow.com/questions/2203679/php-filesize-works-on-all-but-one-file-gives-stat-failed-error) – pascal

उत्तर

7

आप रिमोट तत्वों का फ़ाइल आकार नहीं प्राप्त कर सकते हैं, या तो अपने सिस्टम पर एक सापेक्ष पथ दे सकते हैं या सामग्री प्राप्त करने के लिए file_get_contents() कर सकते हैं। इस प्रकार, http: // के बजाय, filesize('/path/to/local/system') करें। सुनिश्चित करें कि यह php प्रक्रिया

+0

हाँ, सच है, मैं बस ध्यान दिया, धन्यवाद। मुझे हाथ से पहले यह सोचना चाहिए था, मैं बेवकूफ हूँ। – Macao

+0

PHP.net पर ['filesize()' दस्तावेज़ों में एक टिप के बारे में क्या है (http://php.net/manual/en/function.filesize.php)? यह कहता है: "PHP 5.0.0 के रूप में, इस फ़ंक्शन का उपयोग कुछ यूआरएल रैपरों के साथ भी किया जा सकता है। यह निर्धारित करने के लिए कि कौन से रैपर कार्यक्षमता के stat() परिवार का समर्थन करते हैं, समर्थित प्रोटोकॉल और रैपर का संदर्भ लें। लगता है, आप ** ** फाइलसाइज() 'दूरस्थ तत्वों का उपयोग कर सकते हैं। आपको केवल अपना सर्वर और PHP पार्सर ठीक से कॉन्फ़िगर करना होगा (सुरक्षा मामलों)। – trejder

4

द्वारा पठनीय सुनिश्चित करें कि आप इस तरह की दूरस्थ फ़ाइल की फ़ाइलसाइज़ को नहीं देख सकते हैं। यह स्थानीय फाइलों के फाइलसाइज को देखने के लिए है।

उदाहरण के लिए ...

$imgsize = filesize('/home/projects/site/1.jpg'); 
+0

स्टीवी के जवाब पर मेरी टिप्पणी देखें। यदि आप केवल आपके पर्यावरण और सर्वर को सही तरीके से कॉन्फ़िगर कर रहे हैं, तो आप ** दूरस्थ फ़ाइल के लिए फ़ाइलों का आकार उपयोग कर सकते हैं। – trejder

0

filesize तर्क के रूप में एक यूआरएल नहीं फ़ाइल का नाम लेता है और यह बाइट्स में फ़ाइल के आकार देता है। केबी में आकार प्राप्त करने के लिए आप वापसी मूल्य को 1024 से विभाजित कर सकते हैं।

+0

स्टीवी के जवाब पर मेरी टिप्पणी देखें। यदि आप केवल आपके पर्यावरण और सर्वर को सही तरीके से कॉन्फ़िगर कर रहे हैं, तो आप ** दूरस्थ फ़ाइल के लिए फ़ाइलों का आकार उपयोग कर सकते हैं। – trejder

1

filesize() उपयोग करने के लिए कार्य है। क्योंकि

  1. आप URL मान्य नहीं है यही कारण है कि प्राप्त करने के लिए एक वेब पता & यूआरएल रैपर
  2. चालू नहीं किया जा सकता है की कोशिश कर रहे यह नाकाम रहने जा सकता है।

आप एक स्थानीय फ़ाइल पर filesize() चलाने फ़ाइल सिस्टम पथ, नहीं कुछ वेब यूआरएल को संदर्भित करने के प्रयास कर रहे हैं।

0

मुझे वही समस्या थी, जिसे मैंने हल किया था। मैं इसे कैसे इष्टतम है पता नहीं है, लेकिन यह मेरे लिए काम करता है:

getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

$file_size = $file[0]*$file[1]*$file["bits"]; 
+0

यदि फाइलसाइज() HTTP संसाधनों के साथ काम नहीं करता है, तो getimagesize() भी असफल हो जाएगा। असंपीड़ित छवि गुणों को गुणा करके फाइलसाइज की गणना करना भी गलत परिणाम देगा। – Sven

1

या आप भी कुछ ऐसा कर सकते हैं:

$header = get_headers($url); 
foreach ($header as $head) { 
    if (preg_match('/Content-Length: /', $head)) { 
     $size = substr($head, 15);      
    } 
} 
संबंधित मुद्दे