【问题标题】:Retrieve BLOB file检索 BLOB 文件
【发布时间】:2011-12-17 08:55:36
【问题描述】:

我在我的 SQL 数据库中上传 BLOB 文件。我创建了重定向到我的 download.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����* 

这是我在这个 download.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();
}

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

【问题讨论】:

    标签: c# .net sql ado.net blob


    【解决方案1】:

    您需要将 Content-Type、Content-Length 和 Content-Disposition 标头发送到浏览器,以便它能够理解二进制数据。

    【讨论】:

    • 正如伊卡洛斯所说。也谢谢你的回答,对我有帮助!
    【解决方案2】:

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

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

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

    【讨论】:

    • 如果我还想下载 .cs、visual studio 文件、pdf 文件?我应该怎么做 ?否则,您的代码将完美运行!非常感谢!
    • @Emged 您需要知道要流式传输给用户的文件类型,并适当地设置内容处置和内容类型。我的建议是您也将文件类型存储在数据库中,这样您就不必尝试detect it 分析字节。
    • @Emged 只需为您的文件使用适当的 mime 类型。 iana.org/assignments/media-types/image/index.html
    猜你喜欢
    • 2017-10-01
    • 2012-11-20
    • 2021-11-21
    • 2014-11-12
    • 2016-08-13
    • 2017-03-10
    • 1970-01-01
    • 2020-09-11
    • 2020-05-28
    相关资源
    最近更新 更多