web-dev-qa-db-ja.com

Webサーバーへのファイルの書き込み-ASP.NET

TextBoxコントロールのコンテンツをWebサーバーディレクトリのルートにあるファイルに書き込むだけです...どのように指定しますか?

これをローカルでテストしていることに注意してください...プロジェクトディレクトリではなく、プログラムファイル\ 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); //ファイルを書き込みます。
 _testData.Close(); // StreamWriterのインスタンスを閉じます。
 _testData.Dispose(); //メモリから破棄します。 
}
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は仮想パスを取り、絶対パスを返します。 「〜」は、アプリケーションルートを解決するために使用されます。

76
Darthg8r

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

MapPathメソッドを使用して、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

Webサーバーにアップロードしたら、IUSRアカウントにフォルダーへの書き込みアクセス権を付与する必要があることに注意してください。

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

8
Spencer Ruport