2009-08-12 32 views
36

WebサーバーディレクトリのルートにあるファイルにTextBoxコントロールの内容を書き込むだけです...どうすれば指定できますか?Webサーバーにファイルを書き込む - ASP.NET

私はこれをローカルでテストしています...プロジェクトディレクトリではなく私のプログラムファイル\ visual studio \ Common \ IDEディレクトリにファイルを書き続けます(これはルートとはWebサーバーがオフになります)。

問題は私のweb.configで正しい場所を指定することと関係がありますか?私はそれを試してみましたが、まだ行く...

おかげで多くの...

 
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

これは単純なテストプロジェクト以上のものではない場合、Webサーバーディレクトリのルートに保存しないでください。世界中からアクセスできない一時フォルダを使用してください。そうしないと、ユーザーはサーバーに任意のコンテンツを置くことができます。 –

答えて

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のは、仮想パスを受け取り、絶対的なものを返します。アプリケーションルートに解決するために「〜」が使用されます。

+1

@SpencerRuportが述べたように、ルートディレクトリに対して書き込み権限を設定することはお勧めできません。たとえば、書き込み権限を持つ新しいフォルダを作成し、それをすべての出力に使用するほうがよいでしょう。 – 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

Server.MapPathはコードをコードに記述している場合は、 'System.Web.HttpContext.Current.Server.MapPath'です。 – styfle

8

また、Webサーバーにアップロードした後に、IUSRアカウントにそのフォルダの書き込みアクセス権を与える必要があります。

個人的には、正当な理由がない限り、ルートフォルダへの書き込みアクセスを許可しないことをおすすめします。そして、あなたが誤って誰かが自分のASPXページを書くことを許さないように、どのような種類のファイルを保存できるように注意する必要があります。

27

クラスには、ファイルの一般的な操作にはWriteAllTextのようなメソッドがあります。

MapPathメソッドを使用して、Webアプリケーション内のファイルの物理パスを取得します。

File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text); 
+1

なぜこれがそれ以上upvotedされているのか分かりません –

関連する問題