2011-10-31 15 views
17

मैं PHP का उपयोग करके कुछ अपलोड करने की कोशिश कर रहा हूं और कुल आकार पर एक सीमा निर्धारित करता हूं जिसे मैं अपलोड करने की अनुमति देता हूं।

if (($_FILES["file"]["size"] < 2097152)) 

एक फ़ाइल है कि बड़ी है (इस तरह के एक 7MB फ़ाइल के रूप में) अगर बयान क्योंकि के माध्यम से पारित होगा: मैं जब भी मैं इस तरह एक अगर बयान के साथ जांच करने के लिए प्रयास करने के लिए 2 एमबी लेकिन किसी कारण से मेरे अपलोड सीमित करना चाहते हैं किसी भी कारण से यदि मैं $ _FILES ["फ़ाइल"] ["आकार"] प्रिंट करता हूं, तो यह बाइट्स की उचित संख्या के बजाय 0 लौटाएगा। यदि मैं कुछ छोटा अपलोड करने का प्रयास करता हूं, जैसे 342kb $ _FILES ["file"] ["size"] उचित आकार वापस कर देगा।

क्या वास्तव में फ़ाइल के उचित आकार को रखने के लिए $ _FILES ["फ़ाइल"] ["आकार"] प्राप्त करने के लिए वैसे भी है? अन्यथा मुझे नहीं पता कि इस समस्या को कैसे ठीक किया जाए।

+1

आपके php.ini में अपलोड करने योग्य डेटा की सीमा कौन सा है? क्या आप वाकई अपलोड करने की कोशिश की गई फ़ाइल (7 एमबी) वास्तव में सही तरीके से अपलोड की गई है? मुझे लगता है कि यह नहीं है ... – Marco

+0

मैं 100% निश्चित नहीं हूं, लेकिन फ़ाइल का अधिकतम अपलोड आकार php.ini, php config फ़ाइल द्वारा सेट किया गया है। अगर फ़ाइल उस सीमा से बड़ी है, तो इसे शुरू करने के लिए कभी भी अपलोड नहीं किया जाएगा, यही कारण है कि आपको 0 का आकार आकार मिलेगा। –

+0

'var_dump ($ _ FILES); ';) आज़माएं और त्रुटि रिपोर्टिंग जांचें ... –

उत्तर

25

लिखा जा सकता है एक फाइल है जिसके लिए रोकता की कोशिश कर सकते किसी भी कारण (अपलोड करना विफल, सीमा से अधिक है, आदि ...) आकार के रूप में दिखाई देगा 0

आप अपलोड सफलता के लिए जाँच करने के लिए इससे पहले कि आप वें eupload डेटा के बाकी साथ कुछ भी है:

if(array_key_exists('file', $_FILES)){ 
    if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { 
     echo 'upload was successful'; 
    } else { 
     die("Upload failed with error code " . $_FILES['file']['error']); 
    } 
} 

त्रुटि कोड here परिभाषित किए गए हैं। आपके मामले में, यदि आपने 2 मेगापिक्सल सीमा को हार्डकोड किया है और कोई 2.1 मेगापिक्सल फ़ाइल अपलोड करता है, तो त्रुटि कोड UPLOAD_ERR_INI_SIZE (उर्फ 2) होगा, जो ".ini फ़ाइल में सीमा सेट से अधिक है"।

+0

अच्छा जवाब, वास्तव में। आपके लिए +1;) – Marco

+0

धन्यवाद, यह बहुत उपयोगी था। – user494216

+1

त्रुटि कोड 0 है, आकार भी 0 है ... हम उस के आसपास कैसे जाते हैं? – Deji

4
if($_FILES['file']['size'] && $_FILES['file']['size'] < (2<<20)) 

कोशिश करें।

< < बिटवाई शिफ्ट ऑपरेटर है, दशमलव 2 द्विआधारी "10" है, फिर 20 शून्य जोड़ें।

+4

बहुत अच्छा तरीका है, हालांकि आप कोड को समझा सकते हैं - हर कोई नहीं जानता कि बिजली गणना करने के लिए बाइनरी शिफ्ट का उपयोग कैसे करें –

1

मुझे अपनी पिछली टिप्पणी में कैसा लगा, आपकी समस्या यह है कि php.ini में अपलोड करने योग्य फ़ाइल की सीमा 7 एमबी से कम है।
तो आप उपयोग करना

if ($_FILES["file"]["size"] > 0 && $_FILES["file"]["size"] < 2097152) 

पर विचार करें कि यदि आप अपने सीमा (php.ini में) 2 एमबी करने के लिए रखा, कि चेक आसानी से के रूप में

if ($_FILES["file"]["size"] > 0) 
संबंधित मुद्दे