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 回答