2017-01-19 5 views
0

としてダウンロードした後、破損したファイル私は、MySQLデータベースにBLOBとして文書を保存するプロジェクトを持っている、とC#を使用してバイト配列としてそれらをダウンロードしてください:のC#:バイト配列

public static byte[] GetFile(string fileName) 
{ 
     conn.Open(); 
     MySqlCommand cmd = conn.CreateCommand(); 
     cmd.CommandText = ... 
     using (MySqlDataReader reader = cmd.ExecuteReader()) 
     { 
      reader.Read(); 
      if (reader.HasRows) 
      { 
       return Util.ObjectToByteArray(reader["Content"]); 
      } 
      ... 
} 

...

byte[] newFile = File.ReadAllBytes(fileName); 

をし、次のようにダウンロードしてください:

public static byte[] ObjectToByteArray(object obj) 
{ 
    BinaryFormatter bf = new BinaryFormatter(); 
    using (var ms = new MemoryStream()) 
    { 
     bf.Serialize(ms, obj); 
     return ms.ToArray(); 
    } 
} 

私はこのようなファイルをアップロード

ファイルをダウンロードすると、ファイルが破損して開くことができなくなります(Excelファイルなどいくつかの種類のファイルを開くことができます)。ダウンロードしたファイルの拡張子は正しいようですが、「ファイル拡張子またはファイル形式が無効です」というメッセージが表示されます。

+1

データベースにファイルを保存しないでください。 http://stackoverflow.com/a/41235395/267540 – e4c5

+0

diffツールを入手して対称的な段階で作業する - プロジェクトの最小限の部分に何らかの変換が含まれていることを確認し、その変換を元に戻すビットを実行し、出力を入力と比較します。それから、ビルドアップして複雑さを加える(アップロード/ダウンロード、DBとのやりとりなど) –

答えて

1

データリーダーのGetStream()オーバーライドを使用することをお勧めします。

content = reader.GetStream(1); 

単純にストリームオブジェクトをファイルライターに返します。