Поток файлов в SQL Server и C # для ASPX - PullRequest
3 голосов
/ 20 апреля 2009

Я занимаюсь разработкой сайта для образовательного домена. Я хочу сохранить документ (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); как «Отказано в доступе к пути».

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

Ответы [ 4 ]

1 голос
/ 30 ноября 2009

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

1 голос
/ 20 апреля 2009

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

Марк

0 голосов
/ 08 апреля 2013

В обоих примерах вы не используете свой 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();
0 голосов
/ 20 апреля 2009

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

...