Comment puis-je obtenir le chemin complet du fichier téléchargé en C # 3.0?
-
06-07-2019 - |
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 !!
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"