2009-04-20 10 views
3

私は教育ドメイン用のWebサイトを開発しています。 SQL Server 2008でFilestreamを使用してバイナリ形式の文書(MS Wordまたはテキストファイル)を保存しますが、テキストボックスで文書を取得できません。次のようにSQLサーバーのfilestreamとaspxのC#

私のコードは次のとおりです。

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); にエラーが発生します。

助けてください!

+0

SQL Serverで使用されている.MDFファイルでファイルを開こうとしていますか? –

+0

「読者」には何が含まれていますか?あなたはそこで何の価値観を得ていますか? –

+1

提供されている両方のコードスニペットに違いはありません! – Cerebrus

答えて

1

このチェックアウトarticle - これは、SQL Server 2008のファイル操作がどのように機能するかを詳細に示しています。

マーク

0

ご理解のとおり、Windows認証経由でサーバーに接続する必要があります。 SQL Server認証では機能しません。また、Windowsユーザーは、データを格納するためにSQL Serverによって作成された共有フォルダにアクセスできる必要があります。

1

ストリーム1を使用してデータを読み取る必要があります。 StreamReaderおよびFile.OpenTextアプローチは機能しません.T-SQLまたはSqlFileStreamオブジェクトを使用してファイルストリームデータのみを読み取ることができます。

0

両方の例では、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(); 
関連する問題