Запись файла на веб-сервер - ASP.NET
Я просто хочу записать содержимое элемента управления TextBox в файл в корне каталога веб-сервера... как его указать?
Помните, я тестирую это локально... он продолжает записывать файл в мои файлы программ \visual studio\Common\IDE, а не в каталог моего проекта (где я предполагаю, что root - это когда веб-сервер срабатывает).
Есть ли у моей проблемы что-то делать с указанием правильного местоположения в моем 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.
}
Ответы
Ответ 1
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 принимает виртуальный путь и возвращает абсолютный. "~" используется для разрешения root приложения.
Ответ 2
В классе File
существуют методы типа WriteAllText
для общих операций с файлами.
Используйте метод MapPath
для получения физического пути к файлу в вашем веб-приложении.
File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text);
Ответ 3
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
}
}
Ответ 4
Имейте в виду, что вам также придется предоставить доступ к учетной записи учетной записи IUSR для папки после ее загрузки на ваш веб-сервер.
Лично я рекомендую не разрешать доступ на запись в корневую папку, если у вас нет веских оснований для этого. И тогда вам нужно быть осторожным, какие файлы вы позволяете сохранять, чтобы вы не случайно позволяли кому-то писать свои собственные ASPX-страницы.