2012-04-30 23 views
5

मैं ठंडेपन का बहुत उपयोग नहीं करता हूं, हालांकि मुझे कुछ कोड पैच करने की आवश्यकता है। असल में मैं यह जांचने की कोशिश कर रहा हूं कि मैंने अपलोड की गई फ़ाइल मौजूद है या नहीं और यदि यह अस्तित्व में है, तो 1 से वैरिएबल बढ़ाएं। फिर दोबारा दोहराएं जब तक मुझे एक अद्वितीय फ़ाइल नाम नहीं मिलता है। किसी भी कारण से मैं FileExist() का उपयोग करने का उचित तरीका नहीं समझ सकता। कुछ मंच इसे लेन() के साथ उपयोग करने का सुझाव देते हैं लेकिन वे 2006 से हैं और जब मैं ऐसा करता हूं तो यह हमेशा सच साबित होता है। इसके अलावा, जब मैं http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c66.html पर देखता हूं तो यह कहता है कि यह या तो हाँ या नंबर लौटाता है, मैंने परिणाम के खिलाफ विभिन्न तरीकों की जांच करने की कोशिश की, लेकिन कोई भाग्य नहीं।कोल्डफ्यूजन की FileExist() विधि का सही तरीके से उपयोग कैसे करें?

यह कोड का वह हिस्सा है जिसके साथ मैं काम कर रहा हूं। Application.filepath सिर्फ मेरी एप्लिकेशन फ़ाइल में एक चर है जो विस्तारपथ() को संग्रहीत करता है।

<cffile action="upload" destination="#Application.filePath#ListingsGallery/" filefield="iconImage" nameconflict="makeunique"> 
<cfset iconPlace = #cffile.serverfile#> 
<cfset myExt = listLast(iconPlace,".")> 
<cfset i = 1 > 
<cfset myVar = false> 
<cfloop condition="myVar EQ false"> 

    <cfset newIconName = "iconPhoto" & i &"."& myExt> 
    <cfset iconName = Application.filePath & "ListingsGallery/" & #newIconName#> 
<cfoutput>#iconName#</cfoutput><br />//just checking to see if it is the correct path, it is. 

    <cfif FileExists(iconName) EQ 'Yes'> 
     <cfoutput>#myVar#</cfoutput> //checking the value, it never hits here. 
    <cfelse> 
      <cfoutput>#myVar#</cfoutput><br /> //checking the value, it always hits here. 
    <cfset myVar = true>   
      <cfoutput>#myVar#</cfoutput> //Again check the value. 
    </cfif> 
<cfset i++> 
</cfloop>      
<cffile action="rename" source="#Application.filePath#ListingsGallery/#iconPlace#" destination="#Application.filePath#ListingsGallery/#newIconName#"> 

एक यूनिक्स सर्वर पर निरपेक्ष पथ कुछ की तरह,/var/www/वेबसाइट फ़ोल्डर नाम/आदि .... सही है? यह पूर्ण सर्वर पथ है, कोल्डफ्यूजन दस्तावेज़ कम से कम एक माइक्रोसॉफ्ट पूर्ण सर्वर पथ निर्दिष्ट करने लगते हैं, इसलिए मुझे लगता है कि यह आवश्यक है।

संपादित करें --------------------------- पीएस: मैं केवल आप में से एक क्रेडिट दे सकता हूं, इसलिए मैंने इसे दिया क्रुगर के बाद से वह एक मिनट पहले आया था। लॉल ...

+0

आइकन नाम कैसा दिखता है? मुझे लगता है कि आप इसे परीक्षण करने के लिए आउटपुट कर रहे हैं, जो अच्छा है। पथ के लिए, मैं/का उपयोग करने की सलाह देते हैं। यह विंडोज + लिनक्स/ओएसएक्स सिस्टम में काम करता है। –

+0

'' एक स्ट्रिंग तुलना है। आपको शायद < 'करना चाहिए क्योंकि फ़ाइलइक्सिस्ट एक बूलियन मान देता है। – ale

उत्तर

3

मान लिया जाये कि सही फ़ाइल पथ आप सही रास्ते पर हैं है। ऐसा लगता है कि आपकी अपलोड निर्देशिका वेब रूट के नीचे हो सकती है - इसे सुरक्षा के लिए वेब रूट के बाहर ले जाने पर विचार करें। #expandPath ('।') # को टाइपो के बिना गारंटीकृत फ़ाइल पथ बनाने के तरीके के रूप में देखें :) इसके अलावा आपका कोड अधिक पोर्टेबल बनाता है।

मेरी आंखों के ऊपर उपरोक्त कोड काम करेगा। । FYI करें - आप "EQ 'हाँ' की जरूरत नहीं है आप ठीक हैं करने के लिए सिर्फ कार्य करें:

<Cfif FileExists(iconName)>... 

तुम भी

condition="NOT myVar"> 

कर सकता है वहाँ CF के

में तर्क कोड को संभालने के लिए कई तरीके हैं

अपने fileexists हैं() कभी हिट अपने नाम बदलने को करीब से देख लेते हैं। आप एक eror फेंक रहे हैं?

+0

हे .... बस एक नोट - आपका कोड कुछ हद तक अनिवार्य है .. आपकी फ़ाइल अपलोड पर "मेक्यूनिक" विशेषता विशिष्टता की गारंटी देगी ... –

+0

हां, लेकिन मेरे द्वारा किए गए मुद्दों के कारण मुझे ऐसा करना पड़ा रिक्त स्थान के साथ छवियों को अपलोड करने वाले लोगों के साथ करें। वे डेटाबेस में% 20 में बदल जाते हैं लेकिन सर्वर पर एक स्थान रहते हैं। तो छवियों को कभी भी प्रकट नहीं होता है और डेटाबेस प्रविष्टि के आधार पर हटाया नहीं जा सकता है। मुझे लगता है कि मैं कुछ प्रकार की str_replace कर सकता हूं लेकिन अगर मैं इसे यहां छीन सकता हूं तो मुझे इन छवियों के हर संदर्भ को पार करने और संशोधित करने की आवश्यकता नहीं है। –

+0

तब मैं कहूंगा कि आप सही रास्ते पर हैं ... मैंने कुछ कोड खुद को कुछ बार लिखा है :) –

5

फ़ाइलइक्सिस्ट() एक बूलियन मान देता है। यह ठीक अब कि टाइपो तय किया गया है काम करना चाहिए:

अपने application.Filepath
<cfif fileExists(TheFile)> 
    // do this 
<cfelse> 
    // do that 
</cfif> 
+1

यह रिकॉर्ड के लिए काम करता है, हालांकि ठंडे फ़्यूज़न डॉक्स कहते हैं कि यह या तो 'हां' या 'नहीं' को बूलियन मान या सत्य/झूठी स्थिति का कोई उल्लेख नहीं देता है। http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c66.html मैं समझता हूं कि हाँ/नहीं चालू/बंद है, लेकिन मैंने इसे कभी नहीं देखा है, इसलिए मैंने सोचा कि उनका मतलब शाब्दिक 'हां ' याँ नहीं'। आपकी मदद के लिए सभी को धन्यवाद। –

+0

सीएफ़ कोड में कई जगहें हैं जहां केवल सच/गलत काम है। यह सिर्फ थोड़ी छोटी गाड़ी है और दस्तावेज़ीकरण में कुछ त्रुटियां हैं। मुझे खुशी है कि मैं कुछ मदद कर सकता हूं। –

+0

@Evik - कुछ विशेष मामले हो सकते हैं (मुझे ऑफहेड याद नहीं किया जा सकता है), लेकिन मुझे पूरा यकीन है कि यह उनमें से एक नहीं है :) या तो वाक्यविन्यास काम करना चाहिए। यह सिर्फ शैली का मामला है। हालांकि मैं तुम्हारा पसंद करता हूँ। – Leigh

3

मैं नहीं अभी तक उत्तर देने के लिए नोट्स जोड़ सकते हैं, लेकिन मैं ओ पी जाने के लिए पता है कि सीएफ typeless है चाहता था जब यह बूलियन ईवी की बात आती है कार्यों में aluations। 0 "नो" जैसा ही है "झूठा" जैसा ही है, जबकि कोई भी सकारात्मक संख्या "हां" जैसी ही है "सत्य" जैसी ही है।

+1

हाँ। हालांकि ऋणात्मक संख्याएं भी 'सत्य' के बराबर होती हैं। – Leigh

+0

वहां आप जाते हैं - आप बेवकूफ 50 प्रतिनिधि सीमा से पहले हैं, इसलिए अब टिप्पणियां पोस्ट कर सकते हैं। :) –

+0

मैं आपको एक अतिरिक्त वोट sharondio दे दूंगा ... बस आप टिप्पणी कर सकते हैं :) –

-2

बैक-एंड सुरक्षा के लिए यह बहुत अच्छा है, लेकिन इसे फ्रंट-एंड पर संभाला जाना चाहिए था ताकि आपको कभी भी वह मूल्य न मिले जो आप नहीं चाहते हैं। नए एचटीएमएल 5 इनपुट पैटर्न इसे कभी भी सबमिट होने से रोकेंगे, इसलिए आपको इसे पीछे के अंत में ठीक नहीं करना पड़ेगा।

http://www.w3schools.com/tags/att_input_pattern.asp

+1

मुझे लगता है कि आपने इस सवाल को गलत समझा। वे * सर्वर साइड * फ़ाइलों का नाम बदलने के बारे में पूछ रहे थे। क्लाइंट साइड कोड के साथ कुछ नहीं किया जा सकता है। – Leigh

+0

एचटीएमएल 5 इनपुट पैटर्न सुरक्षा के लिए इस्तेमाल नहीं किया जाना चाहिए। ब्राउज़र को बाईपास करने वाले सर्वर पर डेटा फेंकने के अन्य तरीके हैं। –