файловый поток на сервере sql и С# для aspx

Я разрабатываю веб-сайт для образовательного домена. Я хочу сохранить документ (MS Word или текстовый файл) в базе данных в двоичном формате, используя Filestream в SQL Server 2008, но я не могу получить документ в текстовом поле.

Мой код выглядит следующим образом:

string path = reader.GetString(0);
SqlFileStream stream1 = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Read, FileOptions.SequentialScan, 0);   
StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

txtInput.Text = s;
//lblStatus.Text = "File Succesfully Read!"
fs.Close();

Этот код работает только для документов, которые хранятся в файловой системе, а не в базе данных. Итак, я попробовал следующий код:

string path = reader.GetString(0);
SqlFileStream stream1 = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Read, FileOptions.SequentialScan, 0);   
StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

txtInput.Text = s;
//lblStatus.Text = "File Succesfully Read!"
fs.Close();

В этом коде выдается ошибка в строке fs = File.OpenText(path); как «Отказано в доступе к пути».

Пожалуйста помоги!


person Community    schedule 20.04.2009    source источник
comment
Вы пытаетесь открыть файл в файле .MDF, который используется SQL Server?   -  person JP Alioto    schedule 20.04.2009
comment
Что содержит ваш ридер?? Какие значения вы там извлекаете??   -  person marc_s    schedule 20.04.2009
comment
Я не вижу никакой разницы в обоих предоставленных фрагментах кода!   -  person Cerebrus    schedule 20.04.2009


Ответы (4)


Прочтите эту статью — очень подробно показано, как работают файловые потоки в SQL Server 2008.

Марк

person marc_s    schedule 20.04.2009

Вы должны читать свои данные, используя stream1. Подходы StreamReader и File.OpenText не будут работать, вы можете только читать данные файлового потока с помощью объекта T-SQL или SqlFileStream.

person Pawel Marciniak    schedule 30.11.2009

Насколько я понимаю, вам нужно подключиться к серверу через аутентификацию Windows. Он не будет работать с проверкой подлинности SQL Server. И пользователь Windows должен иметь доступ к общей папке, созданной SQL Server для хранения данных.

person Anuraj    schedule 20.04.2009

В обоих примерах вы не используете SqlFileStream или StreamReader, а просто используете File.OpenText.

StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

Поскольку File.OpenText работает только с файлами на диске, а не с файловыми потоками SQL, вам необходимо использовать средство чтения потоков. Это должно помочь:

StreamReader fs = new StreamReader(stream1);

string s = fs.ReadToEnd();
person Lummo    schedule 08.04.2013