2011-11-17 16 views
14

मेरे पास यह फ़ंक्शन है जो फ़ाइलडेटा को बाइट सरणी और फ़ाइल पथ के रूप में प्राप्त करता है। मुझे जो त्रुटि मिल रही है वह है जब यह कोड bewlo में fileInfo सेट करने का प्रयास करता है। यह शारीरिक दिया पथ, वर्चुअल पथ की उम्मीद 'का कहना हैभौतिक पथ से आभासी पथ में कनवर्ट करें

public override void WriteBinaryStorage(byte[] fileData, string filePath) 
    { 
     try 
     { 
      // Create directory if not exists. 
      System.IO.FileInfo fileInfo = new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(filePath)); //when it gets to this line the error is caught 
      if (!fileInfo.Directory.Exists) 
      { 
       fileInfo.Directory.Create(); 
      } 

      // Write the binary content. 
      System.IO.File.WriteAllBytes(System.Web.HttpContext.Current.Server.MapPath(filePath), fileData); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

जब यह डिबगिंग, FilePath "E:\\WEBS\\webapp\\default\\images\\mains\\myimage.jpg" के रूप में प्रदान कर रहा है। और त्रुटि संदेश

'E:/WEBS/webapp/default/images/mains/myimage.jpg' is a physical path, but a virtual path was expected. 

भी है, क्या यह ऐसा करने के लिए ट्रिगर कर रहा है निम्नलिखित कॉल

properties.ResizeImage(imageName, Configurations.ConfigSettings.MaxImageSize, Server.MapPath(Configurations.EnvironmentConfig.LargeImagePath)); 
+0

मैं जान सकती हूँ क्यों नकारात्मक वोट मैं सी # करने के लिए नया हूँ। कृपया विचार करें – user710502

+0

क्या आप समझते हैं कि 'MapPath' क्या करता है और आपका कोड क्या करने का प्रयास कर रहा है? – SLaks

+0

यह मौजूदा कोड है, मैंने इसे नहीं लिखा .. मेरी समझ यह है कि MapPath एक ऐसा फ़ंक्शन है जो वर्चुअल पथ लेगा और इसे सर्वर पथ में अनुवाद करेगा? लेकिन फिर से मैं नया हूं और शायद मैं स्पष्ट दिख रहा हूं। कठोर होने के बिना, मैं इस मंच पर एक प्रश्न पूछने आया जिसके बारे में मुझे यकीन नहीं है। वोट करने की कोई ज़रूरत नहीं है .. मुझे कल्पना है कि यह मंच क्या नहीं है? अन्यथा मैं प्रोफ़ाइल द्वारा प्रोफ़ाइल पर जा रहा हूं और इसके – user710502

उत्तर

19

आप पहले से ही एक भौतिक पथ है, तो यह समझ में Server.MapPath कॉल करने के लिए नहीं है है।

आप दो बार MapPath पर कॉल कर रहे हैं।

+1

धन्यवाद, तो सर्वर.मैपपाथ का उपयोग करने के बजाय, मुझे कोड की उस पंक्ति को प्रतिस्थापित करने के लिए क्या करना चाहिए? – user710502

1

मैं इसे ले अपनी परियोजना स्थित है कि कम से:

E:\WEBS\\webapp\ 

आप कोशिश करते हैं और आपकी छवियों उदा के सापेक्ष संदर्भ का उपयोग करना चाहिए

..\default\images\mains\myimage.jpg 
2

कार्य:

string[] filesPath = Directory.GetFiles(Server.MapPath("~/txtPath/"));   
    foreach (string path in filesPath) 
    { 
     FileInfo fi = new FileInfo(path);  //This Is Working 
     string LastAcceTime = fi.LastWriteTime; //Return Correct Value 
    } 

काम नहीं कर रहा:

string[] filesPath = Directory.GetFiles(Server.MapPath("~/txtPath/"));   
    foreach (string path in filesPath) 
    { 
     FileInfo fi = new FileInfo(Server.MapPath(path)); //This Is Worng 
     string LastAcceTime = fi.LastWriteTime;    //Return 1/1/1601 
    } 

न का उपयोग Server.Mappath दो बार

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