2013-06-07 7 views
0

Okay après une quantité massive de googling et en essayant différentes choses c'est probablement quelque chose de simple que je suis en train de commettre.Comment accéder dynamiquement à un dossier de serveur distant en C#?

Fondamentalement, ce que je fais est l'analyse d'un productID d'une URL et l'ajout de XL.jpg à la fin. Par exemple, disons que l'identifiant du produit était 1234, le programme chercherait 1234XL.jpg dans le dossier fourni dans PathToFolder (C: // LiveSite/img/XL /). Tout fonctionne comme prévu jusqu'à la partie pathing. Il analyse l'URL ajoute XL.jpg à la fin et même suit le chemin que j'ai défini, mais je reçois une erreur, "L'adresse n'a pas été comprise. Firefox ne sait pas comment ouvrir cette adresse, parce que le protocole (c) n'est associé à aucun programme. " Les autres navigateurs ont juste une fenêtre vide.

C'est ce qui apparaît dans mon navigateur: c://LiveSite/img/XL/1234XL.jpg

protected void OpenImg_Click(object sender, EventArgs e) 
       { 
        int i = 0; 

        string PathToFolder = "C://LiveSite/img/XL/"; 

        var dirInfo = new DirectoryInfo(PathToFolder); 
        string FileName = Variables.param + "XL.jpg"; 
        var foundFiles = dirInfo.GetFiles(FileName); 

        if (foundFiles.Length == 1) 
        { 
         ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + PathToFolder + foundFiles[i].Name + "');", true); 
        } 
       } 
      } 
     } 

Qu'est-ce que je déconner sur qu'il ne sera pas chemin vers le serveur? Y a-t-il quelque chose que je devrais utiliser au lieu de C: //? J'ai essayé de renverser les barres obliques dans l'autre sens et en utilisant C:/none travaillé.

Merci d'avance pour votre aide.

Editer:

Désolé pour la confusion. Les images ne se trouvent pas sur mon ordinateur ou dans le projet. Ils sont sur un serveur distant, serveur SQL si cela est important. Je ne suis pas sûr si je démarre le répertoire correctement si je veux lier à un serveur.

Sur le serveur, je veux le lier au chemin d'accès au dossier dans C: // LiveSite/img/XL/Je comprends maintenant que le lier comme ça ne s'ouvrirait que si je le faisais sur ce serveur. Alors, comment puis-je lier à ce dossier à partir du navigateur Internet? Puis-je utiliser le morceau de code que j'ai écrit ou dois-je le faire d'une manière complètement nouvelle?

C'est une application web asp.net

+0

vous n'avez pas parler de votre type d'application. est cette application web asp.net? si c'est l'application web où se trouvent vos images? à l'intérieur de votre site web racine ou sous-dossier? ou un autre répertoire virtuel? – Damith

+0

oui c'est une application web asp.net. mes images sont situées sur un serveur de l'entreprise. Non, les images ne se trouvent pas dans le projet. – JavaTheScript

+0

est-ce que vous ne pouvez pas accéder aux images du site de l'entreprise en direct? comme 'www.yourcompany.com/img/XL/1234XL.jpg'? – Damith

Répondre

1

Si C://LiveSite/ est votre site Web répertoire racine, vous pouvez utiliser cette

protected void OpenImg_Click(object sender, EventArgs e) 
{ 
    int i = 0; 

    string PathToFolder = "C://LiveSite/img/XL/"; 

    string webRootPathToFolder = ResolveUrl("~/img/XL/"); 
    var dirInfo = new DirectoryInfo(PathToFolder); 
    string FileName = Variables.param + "XL.jpg"; 
    var foundFiles = dirInfo.GetFiles(FileName); 

    if (foundFiles.Length == 1) 
    { 
     ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + webRootPathToFolder + foundFiles[i].Name + "');", true); 
    } 
} 
0

Essayez quelque chose comme this:

file:///c:/path/to/the%20file.txt 

Si vous devez ... ouvrir les fichiers locaux dans le navigateur n'est pas une technique largement utilisée.

Cela fonctionnera uniquement sur votre ordinateur pour ainsi dire. Il n'y a aucun moyen que cette logique fonctionne si le navigateur ne fonctionne pas sur la même machine que le site Web.

Vous devriez envisager une solution où le serveur envoie le contenu du fichier au navigateur dans un octet []. There is an example of that here.

Questions connexes