这是我从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";