2013-04-04 6 views
2
ImageURL = String.Format(@"../Uploads/docs/{0}/Logo.jpg", SellerID); 
if (!File.Exists(ImageURL)) 
{ 
    ImageURL = String.Format(@"../Uploads/docs/defaultLogo.jpg", SellerID); 
} 

Chaque fois que je vérifie s'il y a un fichier, je reçois le logo par défaut dans l'image, y a-t-il quelque chose au-delà de la permission de vérifier.File Exists retourne toujours false

Note: Cette bibliothèque de classe référencée sur le site

+0

Ce code est-il exécuté à distance ou localement à partir d'un site Web/service? – Despertar

+0

son sur le local, cependant j'obtiens le defaultLogo mais le fichier existe semble fonctionner seulement pour l'url complète, toute indepth au sujet de comment le dossier existe fonctionne, n'importe quel lien ?? – brykneval

Répondre

4

Vous devez donner le chemin physique au lieu de chemin virtuel (URL), vous pouvez utiliser webRequest pour trouver si le fichier existe sur donné url. Vous pouvez lire ceci article pour voir différentes méthodes pour vérifier si la ressource à l'URL donnée existe.

private bool RemoteFileExists(string url) 
{ 
    try 
    { 
     //Creating the HttpWebRequest 
     HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
     //Setting the Request method HEAD, you can also use GET too. 
     request.Method = "HEAD"; 
     //Getting the Web Response. 
     HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
     //Returns TURE if the Status code == 200 
     return (response.StatusCode == HttpStatusCode.OK); 
    } 
    catch 
    { 
     //Any exception will returns false. 
     return false; 
    } 
} 

Modifier en fonction des commentaires, l'exécution du code sur le serveur hébergeant les fichiers accédés par url. Je suppose que votre dossier de téléchargement est sur la racine du répertoire du site Web.

ImageURL = String.Format(@"/Uploads/docs/{0}/Logo.jpg", SellerID); 
if(!File.Exists(System.Web.Hosting.HostingEnvironment.MapPath(ImageURL)) 
{ 

} 
+0

désolé de vous informer en retard mais sa bibliothèque de classe référencée sur l'application Web – brykneval

+0

Vous pouvez utiliser ce code dans la bibliothèque de classes. – Adil

+0

Je suis sur local si normal File.Exists aurait fait, je suppose mais son ne fonctionne pas – brykneval

2

Si cela se trouve dans une application Web, le répertoire en cours n'est généralement pas ce que vous pensez être. Par exemple, si IIS sert les pages Web, le répertoire en cours peut être où inetsrv.exe est ou un répertoire temporaire. Pour obtenir le chemin d'accès à votre application Web, vous pouvez utiliser

string path = HostingEnvironment.MapPath(@"../Uploads/docs/defaultLogo.jpg"); 
bool fileExists = File.Exists(path); 

http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.mappath.aspx

MapPath convertira le chemin que vous donnez en quelque chose par rapport à votre application Web. Pour vous assurer que le chemin d'accès est défini correctement, vous pouvez utiliser le débogage de trace avec Trace.Write ou écrire le chemin d'accès à un fichier de débogage (en utilisant un chemin absolu pour le fichier de débogage).

Questions connexes