Question

Sur mon site Web ASP.NET MVC, je dois lire un fichier txt avec des noms et des adresses électroniques séparés par un ';'. Après cela, je dois sauvegarder chaque ligne de ce fichier txt dans la base de données.

En cherchant sur Google, j'ai trouvé des extraits, mais dans chacun d'entre eux, je dois utiliser le chemin du fichier txt.

Mais comment puis-je obtenir ce chemin? Ce fichier peut figurer n'importe où sur la machine d'un utilisateur!

Merci !!

Était-ce utile?

La solution

Vous ne pouvez pas obtenir le chemin complet d'un fichier téléchargé. Cela constituerait une violation de la confidentialité pour l'utilisateur qui a téléchargé le fichier.

Au lieu de cela, vous devrez lire le fichier Request.Files qui a été téléchargé. Par exemple:

HttpPostedFile file = Request.Files[0];
using (StreamReader reader = new StreamReader(file.InputStream))
{
    while ((string line = reader.ReadLine()) != null) 
    {
        string[] addresses = line.Split(';');
        // Do stuff with the addresses
    }
}

Autres conseils

Si vous êtes sur un modèle de page Web asp.net, alors Server.MapPath("~/") fonctionne pour obtenir la racine du site afin de transmettre le chemin dont vous avez besoin. Vous pourriez avoir besoin d'appeler

HttpContext.Current.Server.MapPath("~/");

Par exemple, un dossier dans lequel les fichiers texte sont enregistrés:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");

Pour lire simplement une fois que vous l'avez, vous pouvez le lire dans StreamReader:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");
string path = directoryOfTexts + "myfile.txt";
string alltextinfile = "";
if (File.Exists(path)) 
{
    using (StreamReader sr = new StreamReader(path)) 
    {
       //This allows you to do one Read operation.
       alltextinfile = sr.ReadToEnd());
    }
}

S'il s'agit d'une application de bureau, la classe Applcation possède toutes ces informations:

http://msdn.microsoft .com / fr-us / library / system.windows.forms.application.startuppath.aspx

Application.StartupPath

Toutes les propriétés répertorient d’autres dossiers et autres applications appdata, mais une fois que vous avez le chemin de l’application vers l’exécutable, cela vous donne un contexte tel que Application.LocalUserAppDataPath.

http://msdn.microsoft.com /en-us/library/system.windows.forms.application_properties.aspx

Si le contenu est suffisamment petit, vous pouvez également le sauvegarder dans un HashTable ou un générique List<String> avant de le sauvegarder également dans la base de données.

var hpf = Request.Files[file] as HttpPostedFile; 

le formulaire HTML devrait avoir enctype="mulitipart/form-data"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top