2011-06-01 12 views
13

पर कोई फ़ाइल मौजूद है या नहीं, मैं यह जांचने की कोशिश कर रहा हूं कि मेरे एएसपी.NET वेब पेज के पीछे सी # कोड के साथ सर्वर पर कोई फ़ाइल है या नहीं। मुझे पता है कि फ़ाइल मौजूद है क्योंकि मैंने इसे सर्वर पर हाथ से पहले कोड के टुकड़े में रखा था। क्या कोई देख सकता है कि यह फ़ाइल क्यों नहीं ढूंढ रहा है। यह कोड है:जांचें कि फ़ाइल

wordDocName = "~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc"; 
ViewState["wordDocName"] = wordDocName; 
if (File.Exists(wordDocName)) 
{ 
    btnDownloadWordDoc.Visible = true; 
} 
else 
{ 
    btnDownloadWordDoc.Visible = false; 
} 
+0

क्या आप विंडोज पर यूनिक्स पथ सम्मेलनों का उपयोग कर रहे हैं? –

+0

@ केविन: यूआरआई/यूआरएल –

+0

@ ग्रीनस्क्रीन की तरह: आप अपने व्यूस्टेट को int में क्यों परिवर्तित करते हैं? इसे वापस एक स्ट्रिंग में परिवर्तित कर दिया जाएगा और आपके पास रूपांतरण रूपांतरण के जोखिम के साथ 2 रूपांतरण होंगे। – slfan

उत्तर

40

फ़ाइल पथ भौतिक नहीं होना चाहिए।

if (File.Exists(Server.MapPath(wordDocName))) 
+3

भौतिक बनाम वर्चुअल पर अतिरिक्त जानकारी: [एएसपी.नेट वेब प्रोजेक्ट पथ] (http://msdn.microsoft.com/en-us/library/ms178116.aspx) – MikeM

+0

उत्तर, अगर vb.net के लिए लिखा गया है, तो उसे चाहिए अतिरिक्त 3, समापन कोष्ठक। मैं केवल एक चरित्र के साथ जवाब संपादित नहीं कर सका इसलिए मैं टिप्पणी कर रहा हूं। – Doreen

1

उपयोग

Server.MapPath("~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc") 

का प्रयोग पूरी तरह से योग्य पथ प्राप्त करने के लिए। उस के लिए चाल करना चाहिए।

0

आप Server.MapPath (relativePath) के साथ एक भौतिक पथ के लिए पथ परिवर्तित करने के लिए किसी और

if (File.Exists(filePath)) 

wordDocName = "~/specifications/" + ViewState["projectSelected"] + ".doc";   
btnDownloadWordDoc.Visible = File.Exists(Server.MapPath(wordDocName)); 
2

File.Exists() और शायद सब कुछ आप फ़ाइल के साथ करने के लिए एक वास्तविक पथ की आवश्यकता होगी चाहते हैं।

आपका wordDocName एक सापेक्ष यूआरएल है।

, बस का उपयोग

string fileName = Server.MapPath(wordDocName); 
1

आप Server.MapPath उदा उपयोग करने की आवश्यकता

wordDocName = Server.MapPath("~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc"); 
    ViewState["wordDocName"] = wordDocName; 
    if (File.Exists(wordDocName)) 
    { 
     btnDownloadWordDoc.Visible = true; 
    } 
    else 
    { 
     btnDownloadWordDoc.Visible = false; 
    } 
0

चरित्र "~" ASP.NET में एक विशेष चार आभासी पथ विनिर्देशों प्राप्त करने के लिए है और बस "आवेदन की रूट निर्देशिका" का अर्थ है। File एपीआई जैसे .NET BCL द्वारा समझा नहीं गया है और Server.MapPath() के साथ के साथ भौतिक पथ में पहले मैप किया जाना चाहिए।

-3

string docname="traintatkalantnoy.txt";

string a = (Server.MapPath(docname)); if (File.Exists(a))

0

इस करता है, तो निर्देशिका फ़ाइल पकड़े एक जंक्शन/प्रतीकात्मक कड़ी द्वारा संदर्भित है काम न करे। मेरे पास यह मामला मेरे अपने आवेदन में है और यदि मैं फ़ाइल को वास्तविक पथ डालता हूं, तो File.Exists() सत्य लौटाता है। लेकिन अगर मैं Server.MapPath का उपयोग करता हूं लेकिन फ़ोल्डर वास्तव में फ़ोल्डर के लिए एक जंक्शन है, तो यह असफल लगता है। किसी ने भी वही व्यवहार अनुभव किया?

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