2009-04-20 3 views
3

Je développe un site Web pour le domaine éducatif. Je veux stocker un document (MS Word ou fichier texte) dans la base de données au format binaire à l'aide Filestream dans SQL Server 2008. mais je suis impossible de récupérer le document dans une zone de texte.filestream dans le serveur sql et C# pour aspx

Mon code est le suivant:

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

Ce code ne fonctionne que pour les documents qui sont stockés sur le système de fichiers non dans la base de données. J'ai donc essayé le code suivant:

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

Dans ce code, il donne l'erreur sur la ligne fs = File.OpenText(path); comme « Accès refusé au chemin ».

Aidez s'il vous plaît!

+0

Etes-vous en train d'essayer d'ouvrir un fichier sur un fichier .MDF utilisé par SQL Server? –

+0

Que contient votre «lecteur»? Quelles valeurs récupérez-vous là? –

+1

Je ne peux pas faire de différence dans les deux extraits de code fournis! – Cerebrus

Répondre

1

Découvrez ce article - il montre en détail comment fonctionnent les opérations de flux de fichiers avec SQL Server 2008.

Marc

0

Selon ma compréhension, vous devez vous connecter au serveur via l'authentification Windows. Cela ne fonctionnera pas avec l'authentification SQL Server. Et l'utilisateur Windows doit pouvoir accéder au dossier partagé créé par SQL Server pour stocker les données.

1

Vous devriez lire vos données en utilisant stream1. Les approches StreamReader et File.OpenText ne fonctionneront pas, vous pouvez uniquement lire les données de flux de fichiers à l'aide de l'objet T-SQL ou SqlFileStream.

0

Dans les deux exemples, vous n'utilisez pas votre SqlFileStream ou StreamReader et n'utilisez que File.OpenText.

StreamReader fs = new StreamReader(stream1); 

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

Comme File.OpenText ne fonctionne que pour les fichiers sur le disque et non SQL filestreams vous devez utiliser le lecteur de flux. Cela devrait faire l'affaire:

StreamReader fs = new StreamReader(stream1); 

string s = fs.ReadToEnd(); 
Questions connexes