c# - 检索 BLOB 文件

标签 c# .net sql ado.net blob

我将 BLOB 文件上传到我的 SQL 数据库中。我创建了重定向到我的 downloading.aspx.cs 的动态超链接,以下载文件。

当我点击它时,我唯一检索到的是这样的东西:

*����JFIF,,��ExifMM*�   ���(1�2;%+>P?`���7��i��%��NIKON CORPORATIONNIKON D3-��'-��'Adobe Photoshop CS4 Macintosh2010:11:19 21:53:25 9�I�@d!ddGddd+�K�r� (��Ƃ�Έ"�'@�0221�֐����� ���� � ��,��42��42��42�0100����Р�d����J����R�b����   � ��Z @( 2010:11:19 20:44:392010:11:19 20:44:39 � ASCII  R030100��(�HH����JFIFHH��Adobe_CM��Adobed����* 

这是我在这个 downloading.aspx 中的 Page_Load 代码:

protected void Page_Load(object sender, EventArgs e)
{
    string filename = Request["file"].ToString();
    var conString = ConfigurationManager.ConnectionStrings["LocalSqlServer"];
    string strConnString = conString.ConnectionString;
    SqlConnection dbConnection = new SqlConnection(strConnString);
    dynamic queryString = ("SELECT Data FROM Files WHERE Name = '" + filename + "'");
    SqlCommand theCommand = new SqlCommand(queryString, dbConnection);
    dbConnection.Open();
    SqlDataReader reader = theCommand.ExecuteReader();

    if (reader.Read() && reader != null)
    {
        Byte[] bytes;
        bytes = Encoding.UTF8.GetBytes(String.Empty);
        bytes = (Byte[])reader["Data"];
        Response.BinaryWrite(bytes);

        reader.Close();
    }

    dbConnection.Close();
}

谁能告诉我为什么?谢谢。

最佳答案

您需要设置内容类型,并将内容配置添加到您的响应 header 中:

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
 Response.AddHeader("content-disposition", "attachment;  filename=whatever.xlsx");
 Response.BinaryWrite(yourbytes);

注意:内容类型必须特定于您正在流式传输的文件类型。如果是图片,它必须是像“image/jpg”这样的东西;等。对于标题也是如此;如果是图片,您可能希望将文件名部分的扩展名设置为“file.jpg”。 上面的代码只是一个例子

关于c# - 检索 BLOB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930927/

相关文章:

c# - 我如何构建可以执行用户定义的规则引擎,如果在 C#.net 中有其他规则

java - 从 Hibernate 同时执行插入和选择查询

c# - 如何将 JSON 设置为 WCF 服务的默认值

c# - 使用 C# 的欧拉项目 #4

c# - NavigationService 提示从未附加到任何 View 的类执行 "FileNotFound"

c# - 删除数组中的当前元素

asp.net - 错误 "dotnet : Could not find any project in ` C :\** ."when running "dotnet add package Microsoft. AspNetCore.Authentication.MicrosoftAccount”

.net - 如何从.NET生成的SOAP客户端而不是序列化的对象获得原始XML响应?

php - MySQL查询题..我放弃!

sql - 通过连接两个表来更新查询