2010-03-30 9 views
6

मेरे पास अपलोड होने के लिए एक फ़ाइल है। मुद्दा मेरे पास है कि जब भी कोई फ़ाइल अपलोड होने के है अगर (isset ($ _ फ़ाइलें)) या अगर अभी भी रूप में सफल गुजरता (खाली ($ _ फ़ाइलें)!):जारीकर्ता और अपलोड की गई फ़ाइलों के लिए चेक के माध्यम से खाली नहीं है

$_FILES = $HTTP_POST_FILES; 
if($_POST['type'] == 'photo' && isset($_FILES)){ 
// returns true even if no file is uploaded. What am I missing! 
} 
+0

का उपयोग करते हुए '$ HTTP_ द्वारा (isset() एक" अपरिभाषित सूचकांक "नोटिस को रोकने के लिए है।) POST_FILES' को बहिष्कृत किया गया है: http://php.net/manual/en/reserved.variables.files.php (इसके अलावा इसमें '$ _FILES' के समान मान हैं) –

उत्तर

11

एक superglobal होने के नाते, $_FILES शायद है हमेशा सेट करें, भले ही अपलोड की गई फाइल मौजूद है या नहीं।

फ़ाइल अपलोड (अपलोड) की जांच करें जो आप उम्मीद करेंगे और आकार के क्षेत्र को देखें। (जाहिरा तौर पर मैनुअल में उपयोगकर्ताओं द्वारा योगदान नोट्स के अनुसार, यदि प्रपत्र अपलोड तत्व होता है, यह संभव है कि यहां तक ​​कि isset($_FILES["my_file_name"]) सच वापस आ जाएगी, भले ही कोई फ़ाइल चयनित नहीं था

यह मज़बूती से काम करना चाहिए:।

if($_POST['type'] == 'photo' && 
    ((isset($_FILES["my_file_name"]["size"]) && 
    ($_FILES["my_file_name"]["size"] > 0))){ 

क्या आप के लिए ऐसा करते हैं, जिस तरह से ?:

$_FILES = $HTTP_POST_FILES; 
+0

मेरे पास पहले यह था लेकिन यह थोड़ा लंबा था : $ _FILES ['image'] ['tmp_name'] ... आपको पता है कि मुझे उस दूसरी पंक्ति के बारे में कोई जानकारी नहीं है। $ _FILES = $ HTTP_POST_FILES; यह लगभग तीन भागों में से एक था जो किसी और ने लिखा था। – kalpaitch

+0

@ kalpaitch मुझे लगता है कि आप उस हिस्से को सुरक्षित रूप से हटा सकते हैं, शायद यह PHP 4 में पिछली संगतता के लिए था। –

+0

@ kalpaitch tmp_name के लिए चेकिंग भी ठीक है। –

संबंधित मुद्दे