我正在尝试下载我上传到MS-SQL数据库中图像字段的文件。问题是,当我尝试打开文件时,它只是说System.Byte []而不是包含实际内容。
UploadFiles是我的类,包含文件名,id,filedata等。
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;
}
答案 0 :(得分:2)
在
uf.FileData = encoding.GetBytes(reader["filedata"].ToString());
应该是
uf.FileData = (byte[])reader["filedata"];
返回的数据是一个字节数组,你在字节数组上调用ToString(),它默认返回类名(system.byte []) - 然后转换为字节数组。它应该立即施放
答案 1 :(得分:-1)
尝试 uf.FileName.ToString(),否则您将获得对象类型,而不是FileName属性文本。