Datei -> ByteArray und zurück



  • Hallo zusammen,
    ich habe mal wieder ein Problem. Ich habe mit eine Windowsanwendung geschrieben die eine beliebige Datei (Ausgewählt über den OpenFileDialog) in eine Datenbank einfügt. Dazu benutze ich den SQLServer 2005. Soweit so gut, hat alles geklappt bisher, ich kann die Datei auswählen, die wird auch ordnungsgemäß in die Datenbank eingefügt.

    Um die Datei einzufügen öffne ich diese mit einem FileStream und schreibe die Daten in ein ByteArray. Anschliessend "übergebe" ich dies alles an die Datenbank.

    Nun mein Problem:

    Wie kann ich aus dem ByteArray später wieder eine Datei machen? Die Archivierten Dateien sollen irgendwann ja auch wieder benutzt werden können. Mein Problem ist also ich bekomme die Daten rein, aber nicht mehr raus. Ich hole mir die Daten via StoredProcedure aus der Datenbank und nun weiß ich nicht wie ich diese weiter verarbeiten soll!!

    Hoffe mir kann jmd helfen....

    Gruß



  • Na ja, ich weiss ja nicht, aber wenn in der DB die Daten 1:1 drin stehen, dann einfach auslesen und über einen FileStream wieder auf die Platte schreiben, dateiname mit endung in einer extra-spalte abspeichern um es eben wieder richtig abspeichern zu können und fertig.

    Oder wo genau liegt dein Problem?



  • Hallo,

    um die Datei abzuspeichern nutze ich erstmal folgende Zeilen

    FileStream fStream = new FileStream(FileName, FileMode.Open, FileAccess.Read);
    byte[] contents = new byte[fStream.Length];
    fStream.Read(contents, 0, (int)fStream.Length);
    

    FileName bekomme ich über den OpenFileDialog.

    Nun weiß ich irgendwie nicht wie ich das quasi wieder rückgängig mache. Also von dem ByteArray zurück zum FileStream.

    Tequilla schrieb:

    dateiname mit endung in einer extra-spalte abspeichern

    ist das unbedingt notwendig? dann müsste ich ja quasi meine ganze Datenbank wieder umbauen und auch meine Prozeduren. Habe bisher nur drei Spalten in meiner Tabelle:

    DocumentID --> als Primärschlüssel
    FileName --> dort steht der Komplette Name, also Pfad mit Dateiname und Endung
    Datei --> dort ist die Datei als Bytefolge abgespeichert



  • Das Gegenteil von "Read" ist wohl "Write"...
    Was willst du denn sonst wissen?


Anmelden zum Antworten