使用 httplistener 做的服务器!
浏览器请求了下载的链接后,服务器已经开始给流写入数据了,但是浏览器显示等待服务器响应
直到服务器全部写完,浏览器才会下载(瞬间完成), 这是哪里出错了?整个过程没有下载进度条显示!
response.AddHeader("Content-Disposition", $"attachment;FileName={Path.GetFileName(requestSrcFilePath)}");//已经设置
MsgWinAdd() 是打印东西的
int readCount = 0;
int readAllCount = 0;
string requestSrcFilePath = ServerKernel.Instance.SetResponse(request, response);
MsgWinAdd("准备开始使用流进行发送");
try {
using (FileStream fs = (File.OpenRead(requestSrcFilePath))) {
using (Stream rpStream = response.OutputStream) {
do {
readCount = fs.Read(buff, 0, buff.Length);
if (readCount == 0) {
break;
}
MsgWinAdd("发送大小:" + readCount);
MsgWinAdd($"正在写入......({fs.Length/response.ContentLength64})");
rpStream.Write(buff, 0, readCount);
readAllCount += readCount;
rpStream.Flush();
} while (true);
response.Close();
MsgWinAdd($"写入完成(响应停止:{response.KeepAlive}),共:" + readAllCount);
}
}
MsgWinAdd("退出文件流");
}
catch (Exception ex) {
PrtException(ex);
}
试试发送 content-length
响应头
发送了,是要求发送的文件的大小!
你可以看一下我的网址 第二个是一个3m的东西 问题比较明显
10s左右不反应 然后会瞬间完成!
response.ContentLength64 是这个嘛?
@哎呦,豹豹大人: 我在 Chrome 中测试下载 Game.zip 正常
@dudu: 有下载过程的显示嘛?
@哎呦,豹豹大人: 有
@dudu: 为啥我这里了没有啊?我也下了
自己浏览器的问题