2010-03-03 8 views
6

Ich habe Probleme, Datei aus dem Speicher-Stream in die Datenbank hochzuladen (es ist in DB als 0x sichtbar, also denke ich, es wird nicht richtig gespeichert). Ich bin mir nicht sicher, ob es ein Problem mit Stream ist, der erstellt wird, oder das Speichern in db vom Stream sollte anders gemacht werden.Verwenden von MemoryStream zum Speichern von .docx-Datei C#

private void test { 
     byte[] storage = new byte[500000]; 
     using (MemoryStream stream = new MemoryStream(storage)) 
     DocX documentWord = DocX.Create(stream); 
     // some stuff 
     documentWord.Save(); 
     databaseFilePut(stream); 
} 


public static void databaseFilePut(MemoryStream stream) { 
     byte[] file; 
     using (var reader = new BinaryReader(stream)) { 
       file = reader.ReadBytes((int) stream.Length); 
       // reader.Close(); 
     } 
      //stream.Close(); 
     //} 
     using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetailsDZP)) 
     using (var sqlWrite = new SqlCommand("INSERT INTO Raporty (RaportPlik) Values(@File)", varConnection)) { 
      sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file; 
      sqlWrite.ExecuteNonQuery(); 
     } 
    } 

Was mache ich falsch? Ich benutze Docx Codeplex-Bibliothek.

Antwort

7

Sie schreiben in den Stream und versuchen dann sofort, ohne Zurückspulen zu lesen ... so gibt es keine Daten zu lesen.

Zum Glück gibt es eine sehr einfache Möglichkeit, den Code zu vereinfachen sowieso:

byte[] file = stream.ToArray(); 

Allerdings haben Sie ein anderes potenzielles Problem bekommen:

byte[] storage = new byte[500000]; 
using (MemoryStream stream = new MemoryStream(storage)) 
... 

Dadurch wird die MemoryStream ein fest Größe von 500K - nicht mehr und nicht weniger. Ich vermute, das ist nicht das, was du willst; Ich schlage vor, Sie werden die storage Variable los und rufen Sie einfach den parameterlosen MemoryStream Konstruktor.

+0

Vielen Dank. Ich wusste, dass mir etwas fehlte :-) – MadBoy

Verwandte Themen