Запись файла на веб-сервер – ASP.NET
-
13-09-2019 - |
Вопрос
Я просто хочу записать содержимое элемента управления 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. }
Решение
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 принимает виртуальный путь и возвращает абсолютный.«~» используется для разрешения корня приложения.
Другие советы
Есть такие методы, как WriteAllText
в File
класс для общих операций с файлами.
Использовать MapPath
метод для получения физического пути к файлу в вашем веб-приложении.
File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text);
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
}
}
Имейте в виду, что вам также придется предоставить учетной записи IUSR доступ на запись для папки после загрузки на веб-сервер.
Лично я рекомендую не разрешать доступ на запись к корневой папке, если у вас нет для этого веской причины.И затем вам нужно быть осторожным с тем, какие файлы вы разрешаете сохранять, чтобы случайно не позволить кому-либо писать свои собственные страницы ASPX.