在我的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 []为什么它会发生任何人都可以告诉
答案 0 :(得分:6)
如果dt.Rows[0]["FData"]
以字符串形式出现(只是plain text
),请使用
byte[] bytes = Encoding.UTF8.GetBytes(dt.Rows[0]["FData"]);
如果数据不是纯文本,二进制存储为字符串(而不是base64编码),则表示您处于麻烦我的朋友。
根据MySql documentation,您似乎应该使用LONGBLOB
而不是LONGTEXT
。