从数据库读取文件

发布于 2024-08-03 05:49:00 字数 988 浏览 5 评论 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;
                    }

I am trying to download a file I have uploaded to an image field in my MS-SQL database. The problem is that when I try to open the file it just says System.Byte[] instead of containing the actual content.

UploadFiles is my class which contains the filename, id, filedata etc.

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();
}

Here I retrieve the data from my database:

 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;
                    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

跨年 2024-08-10 05:49:00

返回的数据应该

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

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

是一个字节数组,您对字节数组调用 ToString(),它默认返回类名 (system.byte[]) - 然后将其转换为字节数组 应该立即施放

The

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

should be

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

The data returned is a byte array, and you call ToString() on the byte array, which just defaults to returning the class name (system.byte[]) - which you then convert to a byte array. It should just be cast right away

始终不够 2024-08-10 05:49:00

尝试 uf.FileName.ToString(),否则您将获得对象类型,而不是 FileName 属性文本。

Try uf.FileName.ToString(), otherwise you're getting the object type, not the FileName property text.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文