2009-08-12 19 views
36

Po prostu chcę zapisać zawartość formantu TextBox do pliku w katalogu głównym serwera WWW ... jak to określić?Zapisywanie pliku na serwerze WWW - ASP.NET

Pamiętaj, testuję to lokalnie ... zapisuje plik do moich plików programów \ studio wizualne \ Wspólne \ IDE katalog zamiast do mojego katalogu projektu (w którym zakładam, że root jest kiedy sieć serwer odpala).

Czy mój problem ma coś wspólnego z określeniem odpowiedniej lokalizacji w moim pliku web.config? Próbowałem tego i nadal nie ma go ...

Dzięki dużo ...

 
protected void TestSubmit_ServerClick(object sender, EventArgs e) 
    { 
     StreamWriter _testData = new StreamWriter("data.txt", true); 
     _testData.WriteLine(TextBox1.Text); // Write the file. 
     _testData.Close(); // Close the instance of StreamWriter. 
     _testData.Dispose(); // Dispose from memory.  
    }
+6

Jeśli jest to coś więcej niż zwykły projekt testowy, nigdy * nie zapisuj w katalogu głównym serwera sieciowego. Użyj folderu tymczasowego, który nie jest dostępny z całego świata, w przeciwnym razie użytkownicy mogą umieszczać dowolną zawartość na serwerze. –

Odpowiedz

68
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 odbywa wirtualną ścieżkę i zwraca absolutną jeden. "~" jest używane do rozstrzygnięcia w katalogu głównym aplikacji.

+1

Jak wspomniał @SpencerRuport, nie jest dobrym pomysłem ustawienie uprawnień do zapisu w katalogu głównym. Lepiej jest na przykład utworzyć nowy folder z uprawnieniami do zapisu i użyć go do wszystkich swoich wyjść. – prespic

16
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 
    } 
} 
+15

Należy zauważyć, że Server.MapPath jest 'System.Web.HttpContext.Current.Server.MapPath', jeśli piszesz kod w kodzie. – styfle

8

Należy pamiętać, że po przesłaniu na serwer internetowy konieczne będzie również przyznanie dostępu do folderu IUSR dla folderu.

Osobiście nie polecam uniemożliwić prawa do zapisu w folderze głównym, chyba że masz ku temu dobry powód. A następnie musisz uważać, jakie pliki możesz zapisać, aby nie przypadkowo pozwolić komuś pisać własne strony ASPX.

27

Istnieją metody takie jak WriteAllText w klasie File dla typowych operacji na plikach.

Użyj metody MapPath, aby uzyskać fizyczną ścieżkę do pliku w aplikacji internetowej.

+1

Nie mam pojęcia, dlaczego to nie jest więcej przegłosowane –

Powiązane problemy