47

我只是想将 TextBox 控件的内容写入 Web 服务器目录根目录中的文件...如何指定它?

请记住,我正在本地测试它......它一直将文件写入我的程序 files\visual studio\Common\IDE 目录而不是我的项目目录(我假设 root 是 Web 服务器启动时的位置) .

我的问题是否与在我的 web.config 中指定正确的位置有关?我试过了,还是不行。。。

非常感谢...

protected void TestSubmit_ServerClick(对象发送者,EventArgs e)
    {
        StreamWriter _testData = new StreamWriter("data.txt", true);
        _testData.WriteLine(TextBox1.Text); // 写入文件。
        _testData.Close(); // 关闭 StreamWriter 的实例。
        _testData.Dispose(); // 从内存中释放。       
    }
4

4 回答 4

80
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 采用虚拟路径并返回绝对路径。“~”用于解析到应用程序根目录。

于 2009-08-12T21:18:11.157 回答
35

WriteAllText类中有一些方法File可以对文件进行常见操作。

使用该MapPath方法获取 Web 应用程序中文件的物理路径。

File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text);
于 2009-08-12T21:43:04.600 回答
17
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
    }
}
于 2009-08-12T21:18:38.893 回答
8

请记住,上传到 Web 服务器后,您还必须授予 IUSR 帐户对该文件夹的写入权限。

我个人建议不要允许对根文件夹进行写访问,除非您有充分的理由这样做。然后你需要小心你允许保存什么样的文件,这样你就不会无意中让别人编写他们自己的 ASPX 页面。

于 2009-08-12T21:28:53.477 回答