当前位置: 代码迷 >> ASP.NET >> 将各种类型的文件存储到sqlserver后,怎样将文件下载下来?解决思路
  详细解决方案

将各种类型的文件存储到sqlserver后,怎样将文件下载下来?解决思路

热度:9525   发布时间:2013-02-25 00:00:00.0
将各种类型的文件存储到sqlserver后,怎样将文件下载下来?
这是我从sql中下载文件的代码:
string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
  SqlConnection myConnection = null;
  string strDownloadSql = "SELECT * FROM scanfile where id=" + fid;
  try
  {
  myConnection = new SqlConnection(connStr);
  myConnection.Open();

  SqlCommand sqlcmd = new SqlCommand(strDownloadSql, myConnection);
  SqlDataReader ddr = sqlcmd.ExecuteReader();
  if (ddr.Read())
  {
  string fileType=ddr["fileName"].ToString();
  fileType = fileType.Split('.')[1].ToString().Trim();
  Response.Write(fileType + " lxmlxmlxm " + ddr["fileName"].ToString());
  Response.ContentType = "application/"+fileType;

  Response.AddHeader("Content-Disposition", "attachment;FileName=" + HttpUtility.UrlEncode(ddr["fileName"].ToString(), System.Text.Encoding.UTF8));

  Response.BinaryWrite((byte[])ddr["fileData"]);
  Response.End();

  }

  }

弹出下载页面后,文件类型以及文件名都是乱码,而且下载后的文件也不能被识别,大家帮我想下办法,都急死了

------解决方案--------------------------------------------------------
你得通过流读取出来呀.存进去应该是二进制的吧.

你直接ddr["fileName"].ToString()这样取能行吗..汗~~
------解决方案--------------------------------------------------------
C# code
byte[] buffer = (byte[])ddr["fileData"];Response.Expires = 0;Response.Buffer = true;Response.Clear();Response.ContentType = "Application/octet-stream";Response.AddHeader("Content-Disposition", "attachment;filename=" +     HttpUtility.UrlEncode("文件名.扩展名", System.Text.Encoding.UTF8));Response.AddHeader("Content-Length", buffer.Length.ToString());Response.BinaryWrite(buffer);Response.Flush();Response.End();
------解决方案--------------------------------------------------------
以前遇见过。很有可能是这个问题
Response.ContentType = "Application/octet-stream";
--"Application/octet-stream";
  相关解决方案