2010-07-29 6 views
2

J'essaie de créer un contrôle de téléchargement de fichier personnalisé dans WPF 4.0 et je suis bloqué en un point.
Je ne suis pas en mesure d'enregistrer le fichier dans mon dossier de solution après avoir parcouru le fichier. Ci-dessous le code J'utilise pour la navigationTéléchargeur de fichier dans WPF

private void btnBrowse_Click(object sender, RoutedEventArgs e) 
     { 
      // Create OpenFileDialog 

      Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); 
      dlg.Filter = "Images (*.JPG;*.JPEG;*.PNG)|*.JPG;*.JPEG;*.PNG"; 
      Nullable<bool> result = dlg.ShowDialog(); 
      if (result == true) 
      { 
       string filename = dlg.FileName; 
       FileNameTextBox.Text = filename; 
      } 
     } 

private void btnUpload_Click(object sender, RoutedEventArgs e) 
     { 

      string filename = FileNameTextBox.Text; 
      // Now I want save this file to my image folder. 
     } 

Maintenant, je veux enregistrer le fichier dans le dossier d'image qui est dans ma solution explorer. Pour ASP.NET, nous utilisons Server.Mappath pour mapper le chemin relatif ou virtuel spécifié vers le répertoire physique correspondant sur le serveur. Mais je ne suis pas sûr de ce que nous pouvons utiliser dans WPF pour atteindre la même chose. Je suis nouveau dans WPF alors s'il vous plaît aidez-moi.

Répondre

2

Si vous parlez de WPF, et non de Silverlight, il est important de comprendre la distinction entre WPF et ASP.NET. ASP.NET est une plateforme d'hébergement pour le protocole HTTP. Les chemins dans un site ASP.NET ne sont pas nécessairement représentés directement sur le disque, ainsi Server.MapPath fournit un moyen de mapper un chemin ASP.NET à un chemin physique.

WPF, d'autre part, est simple et simplement un cadre de l'interface utilisateur. Ce n'est pas un environnement d'hébergement comme ASP.NET, donc le concept de mappage des chemins n'est pas pertinent dans le contexte de WPF. Basé sur le code que vous avez fourni, vous n'êtes pas "télécharger" un fichier, vous êtes simplement ouverture un fichier. Dans WPF, la logique de votre application s'exécute directement sur le système d'un utilisateur et, par conséquent, vous avez accès au système de fichiers via l'espace de noms System.IO. Vous pouvez créer un nouveau fichier en utilisant la classe FileStream et copier manuellement les octets de la source dans votre nouveau fichier, ou simplement copier le fichier "ouvert" en utilisant la classe File. Votre interface utilisateur WPF fournit une fenêtre dans une application "bureau" normale, de sorte que le téléchargement de fichiers n'a pas besoin (et ne se produira probablement pas) lorsque vous ouvrez ou enregistrez un fichier. N'oubliez pas que votre application étant une application de bureau, vous serez limité par le jeu d'autorisations de l'utilisateur qui exécute votre application. Si l'utilisateur exécutant votre application n'a pas l'autorisation d'écrire quelque part sur le disque, alors vous rencontrerez des exceptions en essayant d'écrire. Il en va de même s'ils n'ont pas l'autorisation de lire ou de supprimer des fichiers de quelque part. Assurez-vous que toutes les activités de fichiers que vous effectuez sont effectuées dans les zones du système de fichiers autorisées par l'utilisateur, telles que son dossier de documents.

public void btnUpload_Click(object sender, RoutedEventArgs e) 
{ 
    string filename = FileNameTextBox.Text; 
    if (File.Exists(filename)) 
    { 
     // TODO: Show an error message box to user indicating destination file already uploaded 
     return; 
    } 

    string name = Path.GetFileName(filename); 
    string destinationFilename = Path.Combine("C:\\temp\\uploaded files\\", name); 

    File.Copy(filename, destinationFilename); 

    // TODO: Show information or message box indicating file has copied 
} 
Questions connexes