2011-11-17 20 views
14

Dosya verilerini bayt dizisi ve dosya yolu olarak alan bu işleve sahibim. Aldığım hata, kod bewlo dosyasında fileInfo ayarlamaya çalıştığında. Bu 'Verilen Fiziksel Yol, beklenen Sanal Yol' diyorFiziksel yoldan sanal yola dönüşme

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; 
     } 
    } 

, bunu ayıklama "E:\\WEBS\\webapp\\default\\images\\mains\\myimage.jpg" olarak FilePath sağlamaktadır. Ve hata mesajı Ayrıca

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

, bu Bunun gerçekleşmesi için tetikleme şeyin ardından çağrı

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

Biliyorum olabilir. Lütfen dikkat edin – user710502

+0

MapPath'in ne yaptığını ve kodunuzun ne yapmaya çalıştığını anlıyor musunuz? – SLaks

+0

Bu varolan kod, ben yazmadım. Anladığım kadarıyla MapPath sanal yolu alıp sunucu yoluna çevirecek bir fonksiyon mu ?, ama yine ben yeniyim ve belki de açık olanı görüyorum. Kaba olmaksızın, emin olmadığım bir soru sormak için bu foruma geldim. Oylamaya gerek yok .. Bunun forumların ne için olduğunu hayal ediyorum. Diğer bilge ben sadece profile göre profil gidiyorum ve sadece – user710502

cevap

19

Zaten fiziksel bir yol varsa, bu anlamda Server.MapPath aramaya yapmaz olduğunu.

MapPath'u iki kez arıyorsunuz.

E:\WEBS\\webapp\ 

denemek ve mesela görüntülere bağıl başvuruları kullanmalıdır:

+1

Teşekkür ederim, bu yüzden Server.MapPath kullanmak yerine, bu kod satırını ne için değiştirmeliyim? – user710502

1

Ben proje yer aldığını götürün

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

Çalışma:

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 
    } 

Çalışmıyor: negatif oy C# için yeni duyuyorum neden

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 
    } 

Dont Server.Mappath kullanmak iki kez

İlgili konular