Читать файл из базы данных - PullRequest
0 голосов
/ 18 ноября 2008

Я сохранил текстовый файл в виде строки в столбце базы данных. Теперь на одной из моих страниц aspx у меня есть ссылка ... Я хочу открыть текстовый файл, когда пользователь нажимает на эту ссылку. Как я могу прочитать файл из базы данных. Я знаю, как сделать это с помощью потокового считывателя для файла, хранящегося на диске.

Спасибо

Ответы [ 4 ]

2 голосов
/ 18 ноября 2008

Если вам действительно нужно сохранить файл в базе данных (и я полностью согласен с Уиллом в этом, вы не должны), вы можете подумать о реализации отдельной страницы загрузки (например, getfile.aspx), которая отвечает возможно, для получения строки из базы данных на основе идентификатора (getfile.aspx? fileId = 12345), установки соответствующих заголовков HTTP и вывода содержимого непосредственно в браузер. Установив заголовок типа контента, вы сможете заставить браузер видеть страницу aspx как текстовый файл или любой другой распознаваемый формат файла.

Я бы настоятельно рекомендовал изменить настройку проекта, чтобы не сохранять файл в БД, поскольку этот метод может очень быстро запутаться.

1 голос
/ 23 февраля 2011

охватывает базу данных и тип blob ... должно быть полезно.

http://www.php -mysql-tutorial.com / вики / MySQL-учебники / загрузка-файлы-к-MySQL-database.aspx

1 голос
/ 18 ноября 2008

Это займет некоторое разъяснение.

Если файл хранится в базе данных как строка, все, что вам нужно сделать, это прочитать его в строку и отобразить на странице.

public void Page_Load(object sender, EventArgs e)
  var text = (from x in dataContext.MyTextTable where x.Id == someId select x.FileText).FirstOrDefault();

  this.textBox.Text = text;
}

Хорошо, вот что вам нужно сделать. Псевдокод следует:

Загрузить строку из базы данных
Используйте метод ToCharArray () для строки, чтобы получить массив символов Используйте объект HttpResponse для записи () массива char в поток ответов

Вот немного почти компилируемый код:

public void Page_Load(object sender, EventArgs e)
{
  var text = Repository.GetTextFile(this.FileTextBox.Text).ToCharArray();

  Response.Clear();
  Response.AddHeader("Content-Disposition", "attachment; filename=" & this.FileTextBox.Text);
  Response.AddHeader("Content-Length", text.Length.ToString());
  Response.ContentType = "application/octet-stream";
  Response.Write(text, 0, text.length);
  Response.End();
}

Я считаю, что MIME-тип должен быть таким, а не text / plain, поскольку браузер может попытаться открыть файл, а не сохранить его как вложение.

0 голосов
/ 18 ноября 2008

Почему вы хотите сохранить файл в столбце базы данных? Базы данных лучше подходят для того, что вам действительно нужно запрашивать ... Это полезно для запросов типа «дайте мне все данные за последние 30 дней» или «получить все синие машины с тканевыми внутренними украшениями».

Файлы просто лучше обрабатываются файловой системой ОС. Если вам нужна запись о файле, вы можете поместить запись и вместо этого указать путь к файлу в столбце строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...