2010-08-11 18 views
0

J'ai une application web que j'ai téléchargée en utilisant IIS. Je veux que les utilisateurs qui utilisent l'application puissent sélectionner un fichier situé sur leur ordinateur (l'utilisateur) et en lire le contenu.Parcourir un fichier à partir de mon pc en utilisant une application web dans asp.net

Le code est:

TextReader trs = new StreamReader(faFile.Value); 
      DataAccessLayer.clearFA(); 
      string line = trs.ReadLine(); 
      // Read all unneeded data 
      while (line != "** Start Data **") 
      { 
       line = trs.ReadLine(); 
      } 
      line = trs.ReadLine(); 
      while (line != null) 
      { 
       string[] words = line.Split('*'); 
       // There is no message 
       if (words[4] == "") 
       { 
        DataAccessLayer.insertIntoFA(Int32.Parse(words[1]), words[3].Replace("'", "")); 
       } 
       else 
       { 
        DataAccessLayer.insertIntoFA(Int32.Parse(words[1]), words[4].Replace("'", "")); 
       } 
       line = trs.ReadLine(); 
      }   
     } 

Quand je le lance de mon pc ça marche. Mais lorsque je tente de l'exécuter à partir de IIS il me donne l'erreur suivante:

Could not find a part of the path 'C:\Documents and Settings\myUser\Desktop\file.txt'. 

Je comprends que l'application ne peut pas lire le fichier de l'ordinateur de l'utilisateur. Toute idée comment puis-je le faire fonctionner?

Merci!

Greg

Répondre

0

Ceci est fait pour des raisons de sécurité - un navigateur ne dispose pas d'accès au système de fichiers de l'utilisateur.

Il n'existe aucun moyen de contourner ce problème, car toutes les autres technologies exécutées dans un navigateur sont en mode bac à sable et limitées (encore une fois, pour des raisons de sécurité). Le plus proche, vous pouvez obtenir est d'utiliser un <input type="file"> qui permet à l'utilisateur de sélectionner un fichier pour le téléchargement.

+0

C'est ce que je fais. J'ai: Alors, comment l'utilisateur peut télécharger le fichier afin que l'application serait en mesure de le lire? –

+0

@grishaoks - Pourquoi n'utilisez-vous pas le contrôle asp.net ['FileUpload'] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.aspx)? Il vous donne un accès direct au flux d'octets téléchargé. – Oded

+0

Ouais ça marche maintenant :) Merci! –

0

Le chemin du fichier de téléchargement dans IE 8 est un chemin d'accès complet. Vous pouvez obtenir le nom de fichier du nom complet. Combiner le chemin du serveur et le nom de fichier avant d'enregistrer le fichier