web-dev-qa-db-fra.com

Écriture d'un fichier sur un serveur Web - ASP.NET

Je veux simplement écrire le contenu d'un contrôle TextBox dans un fichier à la racine du répertoire du serveur Web ... comment le spécifier?

Gardez à l'esprit, je teste cela localement ... il continue d'écrire le fichier dans mon répertoire de fichiers de programme\visual studio\Common\IDE plutôt que dans mon répertoire de projet (c'est là que je suppose que root est lorsque le serveur Web se déclenche) .

Mon problème a-t-il quelque chose à voir avec la spécification du bon emplacement dans mon web.config? J'ai essayé et toujours pas ...

Merci beaucoup...

 protégé void TestSubmit_ServerClick (expéditeur d'objet, EventArgs e) 
 {
 StreamWriter _testData = new StreamWriter ("data.txt", true); 
 _testData.WriteLine ( TextBox1.Text); // Écrivez le fichier. 
 _TestData.Close (); // Ferme l'instance de StreamWriter. 
 _TestData.Dispose (); // Éliminer de la mémoire. 
}
43
Woody
protected void TestSubmit_ServerClick(object sender, EventArgs e)
{
  using (StreamWriter _testData = new StreamWriter(Server.MapPath("~/data.txt"), true))
 {
  _testData.WriteLine(TextBox1.Text); // Write the file.
 }         
}

Server.MapPath prend un chemin virtuel et renvoie un chemin absolu. "~" est utilisé pour résoudre à la racine de l'application.

76
Darthg8r

Il existe des méthodes telles que WriteAllText dans la classe File pour les opérations courantes sur les fichiers.

Utilisez la méthode MapPath pour obtenir le chemin physique d'un fichier dans votre application Web.

File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text);
29
Guffa
protected void TestSubmit_ServerClick(object sender, EventArgs e)
{
    using (StreamWriter w = new StreamWriter(Server.MapPath("~/data.txt"), true))
    {
        w.WriteLine(TextBox1.Text); // Write the text
    }
}
17
Sean Bright

N'oubliez pas que vous devrez également accorder au compte IUSR un accès en écriture pour le dossier une fois que vous l'avez téléchargé sur votre serveur Web.

Personnellement, je recommande de ne pas autoriser l'accès en écriture au dossier racine, sauf si vous avez une bonne raison de le faire. Et ensuite, vous devez faire attention au type de fichiers que vous autorisez à enregistrer afin de ne pas autoriser par inadvertance quelqu'un à écrire ses propres pages ASPX.

8
Spencer Ruport