无法获取保存在数据库(My-Sql)中的文本文件的内容

时间:2011-04-05 10:01:45

标签: asp.net mysql

在我的MySql中我将我的数据字段设为longblob我希望获取该文件中的内容,以便我编写如下代码

这是我在插入

之前所做的事情
  string filePath = Server.MapPath("AchTemplates/genACH.txt");
    string filename = Path.GetFileName(filePath);
    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    Byte[] bytes = br.ReadBytes((Int32)fs.Length);
    br.Close();
    fs.Close();

    string strQuery = "insert into tblFiles(FName,FData) values (@_FName, @_FData)";
    MySqlCommand cmd = new MySqlCommand(strQuery);
    cmd.Parameters.Add("@_FName", MySqlDbType.VarChar).Value = filename;
    cmd.Parameters.Add("@_FData", MySqlDbType.LongBlob).Value = bytes;
    InsertUpdateData(cmd);

//获取数据

private void download(DataTable dt)
{
    Byte[] bytes = (Byte[])dt.Rows[0]["FData"];
    Response.Buffer = true;
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = dt.Rows[0]["ContentType"].ToString();
    Response.AddHeader("content-disposition", "attachment;filename="
    + dt.Rows[0]["Name"].ToString());
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
}

但我得到的内容为system.string []为什么它会发生任何人都可以告诉

1 个答案:

答案 0 :(得分:6)

如果dt.Rows[0]["FData"]以字符串形式出现(只是plain text),请使用

byte[] bytes = Encoding.UTF8.GetBytes(dt.Rows[0]["FData"]);

如果数据不是纯文本,二进制存储为字符串(而不是base64编码),则表示您处于麻烦我的朋友。


更新

根据MySql documentation,您似乎应该使用LONGBLOB而不是LONGTEXT