再建个专门用于下载的站跟网站分开。
有木有更好的方法
那就不要让用户在下载的时候再去点击别的链接了,或者用户自己尝试了几次,就明白了
不可能不让点,因为网站就是资源下载类的网站。就是提供各种资源给人下载的。
@还是小菜: 大文件的web方式下载就是很慢的啊
难道是服务器配置的不够强悍
@chenping2008: 用向往song的方法新开一个专门用于下载的站点和网站分开的话倒是可以了,但是有没有更好的方法
能不能贴个大概的实现方法?
1、如果不是相同的链接,应该不会这样的。
2、难道下载链接都是需要进行页面提交工作?
try
{
long chunksize = 102400;//100K
byte[] buffer = new byte[chunksize];
HttpContext.Current.Response.Clear();
WebRequest request = WebRequest.Create(filepath);
request.Timeout = 60000;
WebResponse response = request.GetResponse();
Stream iStream = response.GetResponseStream();
long dataLengthToRead = response.ContentLength;//获取下载的文件总大小
HttpContext.Current.Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
HttpContext.Current.Response.AddHeader("Content-Length", dataLengthToRead.ToString());
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
while (dataLengthToRead > 0 && HttpContext.Current.Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(chunksize));//读取的大小
HttpContext.Current.Response.OutputStream.Write(buffer, 0, lengthRead);
HttpContext.Current.Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
response.Close();
iStream.Close();
HttpContext.Current.Response.Close();
}
catch( Exception ex)
{
}
@还是小菜: 我的意思是整个下载流程,不是某一段的代码,比如:
1、用户点击链接 xx/download/?id=xxx
2、后台执行:获得xxx的地址
3、后台执行:下载
@飞来飞去: 就你写的那样的流程