0

MS-SQL データベースのイメージ フィールドにアップロードしたファイルをダウンロードしようとしています。問題は、ファイルを開こうとすると、実際のコンテンツではなく System.Byte[] とだけ表示されることです。

UploadFiles は、ファイル名、ID、ファイルデータなどを含む私のクラスです。

public void DownloadUploadedFile(Page sender, UploadFiles uf)
{
    sender.Response.Clear();
    sender.Response.ContentType = uf.FileType; 
    sender.Response.AddHeader("Content-Disposition",
        "attachment; filename=" + uf.FileName);
    sender.Response.BinaryWrite(uf.FileData); // the binary data
    sender.Response.End();
}

ここでは、データベースからデータを取得します。

 while (reader.Read())
                    {
                        UploadFiles uf = new UploadFiles();
                        uf.FileData = encoding.GetBytes(reader["filedata"].ToString());
                        uf.FileName = reader["name"].ToString();
                        uf.FileType = reader["filetype"].ToString();
                        uf.FileId = Convert.ToInt32(reader["id"]);
                        return uf;
                    }
4

2 に答える 2

2

uf.FileData = encoding.GetBytes(reader["filedata"].ToString());

する必要があります

uf.FileData = (byte[])reader["filedata"];

返されるデータはバイト配列であり、バイト配列で ToString() を呼び出すと、デフォルトでクラス名 (system.byte[]) が返されます。これをバイト配列に変換します。さっさとキャストすればいいのに

于 2009-08-31T14:30:02.467 に答える
-1

uf.FileName.ToString()を試してください。それ以外の場合は、FileName プロパティ テキストではなく、オブジェクト タイプを取得します。

于 2009-08-31T14:05:27.230 に答える