//文件下载 protected void FileAction(object source, RepeaterCommandEventArgs e) { switch (e.CommandName) { case "DownTemp": int downID = Utility.getVal(e.CommandArgument); DataSet ds = Common.NoPager2("Std_BZFiles", "", "ID,FileName,FileUrl", "", "ID='" + downID + "'"); string strFilePhysicalPath = ds.Tables[0].Rows[0]["FileUrl"].ToString(); int start = strFilePhysicalPath.LastIndexOf(".") + 1; int total = strFilePhysicalPath.Length - strFilePhysicalPath.LastIndexOf(".") - 1; string FileUrl = ds.Tables[0].Rows[0]["FileUrl"].ToString(); int k = FileUrl.LastIndexOf("\\"); string strFileName = FileUrl.Substring(k + 37); //清空输出流 Response.Clear(); //在HTTP头中加入文件名信息 Response.AddHeader("Content-Disposition", "attachment;FileName=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8)); //定义输出流翸IME类型为 Response.ContentType = "application/octet-stream"; //从磁盘读取文件流 System.IO.FileStream fs = System.IO.File.OpenRead(strFilePhysicalPath); //定义缓冲区大洙小 byte[] buffer = new byte[102400]; //第台?一?次?读á取? int i = fs.Read(buffer, 0, buffer.Length); //如果读取的字节大于,则使用BinaryWrite()不断向客户端输出文件流 while (i > 0) { Response.BinaryWrite(buffer); i = fs.Read(buffer, 0, buffer.Length); } //关闭磁盘文件流 fs.Close(); //关闭输出流 Response.End(); break; default: break; } }