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

标签 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[] 任何人都可以告诉为什么会这样

最佳答案

如果 dt.Rows[0]["FData"] 以字符串形式出现(它只是纯文本),使用

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

如果数据不是纯文本和二进制存储为字符串(而不是 base64 编码),那么你就有麻烦了,我的 friend 。


更新

根据 MySql documentation ,看来您应该使用 LONGBLOB 而不是 LONGTEXT

关于asp.net - 无法获取数据库中保存的文本文件的内容(My-Sql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5550157/

相关文章:

c# - 尝试将外部网页加载到框架/对话框中

MySQL - 查找围绕搜索关键字的单词

java - JPA:如何设置 MySQL session 变量?

c# - 加载第二页时如何更改母版页的CSS样式表

asp.net - 变量未声明它可能由于其保护级别而无法访问

mysql - 如何获取两个不同表的两列,其中 id = id 和 id= 9?

用于状态条件的 PHP 数组组

mysql - 从 MySQL 导出的 CSV 未出现在指定目录中

asp.net - 使用 ASP.Net 的 Facebook Wall 功能

asp.net - RotativaPDF css不在服务器上工作