2009-04-20 11 views
3

Ich entwickle eine Website für Bildungsbereich. Ich möchte ein Dokument (MS Word oder Textdatei) in Datenbank im Binärformat unter Verwendung von Filestream in SQL Server 2008 speichern, aber ich kann das Dokument in einem Textfeld nicht abrufen.Filestream in SQL Server und C# für Aspx

Mein Code ist wie folgt:

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(); 

Dieser Code nur für Dokumente funktioniert, die auf dem Dateisystem nicht in der Datenbank gespeichert sind. Also habe ich versucht, den folgenden Code:

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(); 

In diesem Code gibt es Fehler in Zeile fs = File.OpenText(path); als „Zugriff auf Pfad verweigert“.

Bitte helfen!

+0

Versuchen Sie, eine Datei öffnen, auf eine MDF-Datei, die von SQL Server verwendet wird? –

+0

Was enthält Ihr "Leser"? Welche Werte holst du dort ab ?? –

+1

Ich kann keinen Unterschied in beiden Code-Schnipsel ausmachen! – Cerebrus

Antwort

1

Überprüfen Sie diese article - es zeigt sehr detailliert, wie die Filestream-Operationen mit SQL Server 2008 funktionieren.

Marc

0

Wie pro mein Verständnis, müssen Sie den Server über die Windows-Authentifizierung verbinden. Es wird nicht mit der SQL Server-Authentifizierung funktionieren. Der Windows-Benutzer sollte auf den freigegebenen Ordner zugreifen können, der von SQL Server zum Speichern der Daten erstellt wurde.

1

Sie sollten Ihre Daten mit stream1 lesen. Die StreamReader- und File.OpenText-Ansätze funktionieren nicht, Sie können Filestream-Daten nur mit dem T-SQL- oder SqlFileStream-Objekt lesen.

0

In beiden Beispielen verwenden Sie nicht Ihren SqlFileStream oder StreamReader und nur File.OpenText.

StreamReader fs = new StreamReader(stream1); 

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

Als File.OpenText nur für Dateien auf der Festplatte arbeitet und nicht SQL Filestreams Sie den Stream-Reader verwenden müssen. Dies sollte den Trick tun:

StreamReader fs = new StreamReader(stream1); 

string s = fs.ReadToEnd();