ASP.Net MVC-webapplicationのuploadpageを使用して、バイナリファイル/添付ファイルをPostgressデータベースに保存しています。これらの添付ファイルをコンソールプログラムでフェッチして内容をディスクに書き込むと、すべての添付ファイルに問題がなく、すべてを読み取ることができます。Webアプリケーションでまったく同じコードを実行すると、各添付ファイルのコンテンツ取得が破損します。これを引き起こしているのは何ですか?
これは私が使用しているコードです:
private void DumpBijlagen( )
{
NpgsqlConnection connection = null;
try
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string connectionString = "Server=127.0.0.1;Port=5432;User Id=gtsys;Password=gtsys;Database=postgis20";
connection = new NpgsqlConnection( connectionString);
StringBuilder sb = new System.Text.StringBuilder( );
sb.AppendFormat( "select id, filename, filesize, created, data from web_bijlagen" );
string sql = sb.ToString( );
d.WriteLine( sql);
NpgsqlDataAdapter da = new NpgsqlDataAdapter( sql, connection);
da.Fill( ds);
dt = ds.Tables[ 0];
string filename = string.Empty;
int fileSize = 0;
byte[] bytes = null;
foreach( DataRow dr in dt.Rows)
{
filename = System.Convert.ToString ( dr[ "filename"]);
fileSize = System.Convert.ToInt32 ( dr[ "filesize"]);
bytes = dr[ "data"] as byte[];
WriteBijlage( filename, bytes);
}
DataDumper.Dump( dt);
connection.Close();
}
catch( System.Exception ex)
{
d.WriteLine( ex.Message);
}
finally
{
if( connection.State == System.Data.ConnectionState.Open)
{
connection.Close( );
}
}
}
private void WriteBijlage( string filename, byte[] bytes)
{
filename = string.Format( @"d:\Usr\Stephan\Junk\wBijlagen\{0}", filename);
FileStream fs = new FileStream ( filename, FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter ( new BufferedStream(fs));
bw.Write( bytes);
bw.Flush();
fs.Close();
bw.Close();
}