近一个月来google下载不支持断点了?
背景:网站中有一些不是很大的文件提供客户下载,客户的并发性不是很高,需要实现简单的下载功能。
1.这是直接文件流的方式下载
FileStream fs = new FileStream(System.Web.HttpContext.Current.Server.MapPath(FullFilePath), FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName + Suffix, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName + Suffix, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
2.后来看到有这样的方式下载,更新了一下。
//FullFilePath = System.Web.HttpContext.Current.Server.MapPath(FullFilePath);
//System.IO.FileInfo fileInfo = new System.IO.FileInfo(FullFilePath);
//if (fileInfo.Exists == true)
//{
// const long ChunkSize = 102400;//100K 每次读取文件,只读取100k,这样可以缓解服务器的压力
// byte[] buffer = new byte[ChunkSize];
// Response.Clear();
// System.IO.FileStream iStream = System.IO.File.OpenRead(FullFilePath);
// long dataLengthToRead = iStream.Length;//获取下载的文件总大小
// Response.ContentType = "application/octet-stream";
// Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName));
// while (dataLengthToRead > 0 && Response.IsClientConnected)
// {
// int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
// Response.OutputStream.Write(buffer, 0, lengthRead);
// Response.Flush();
// dataLengthToRead = dataLengthToRead - lengthRead;
// }
// Response.Close();
//}
//System.IO.FileInfo fileInfo = new System.IO.FileInfo(FullFilePath);
//if (fileInfo.Exists == true)
//{
// const long ChunkSize = 102400;//100K 每次读取文件,只读取100k,这样可以缓解服务器的压力
// byte[] buffer = new byte[ChunkSize];
// Response.Clear();
// System.IO.FileStream iStream = System.IO.File.OpenRead(FullFilePath);
// long dataLengthToRead = iStream.Length;//获取下载的文件总大小
// Response.ContentType = "application/octet-stream";
// Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName));
// while (dataLengthToRead > 0 && Response.IsClientConnected)
// {
// int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
// Response.OutputStream.Write(buffer, 0, lengthRead);
// Response.Flush();
// dataLengthToRead = dataLengthToRead - lengthRead;
// }
// Response.Close();
//}
运行有一两个月了,没有出现问题,但近期发现chrome中无法下载了,具体表现是下载后都显示已下载xxxxkb(就是实际大小,明显已经下载完了,系统运行中也未能捕获任何异常),打开下载内容的列表发现显示“已中断”。就这个下载状态搜了很久,发现没有什么结论性的东西,都只是说chrome的断点续传有问题。
因此觉得可能是和这个有点关系,恢复成旧版本后可以就下载了。