我正在写一个IHttpHandler
来获取ftp服务器上的大文件并将它们提供给用户。如果我的处理程序出错(例如“远程服务器返回错误:(426)连接关闭;传输中止。”),客户端获得未完成的文件,但他/她不知道这一点。客户端看到“下载已成功完成”消息。
如何强制浏览器警告用户并说“下载已完成但有错误,请再试一次”/“下载中断”/“下载已取消”或其他什么内容?
public class FTPServ : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.AppendHeader("Content-Disposition", "attachment; filename=test.mxf");
context.Response.ContentType = "application/mxf";
using (WebClient client = new WebClient())
using (Stream stream = client.OpenRead("ftp://user:pass@IP/file"))
{
try
{
var buffer = new byte[65536 * 2];
int bytesReceived;
while ((bytesReceived = stream.Read(buffer, 0, buffer.Length)) != 0)
{
context.Response.BinaryWrite(buffer);
context.Response.Flush();
}
}
catch (Exception ex)
{
//What to do
}
}
}
public bool IsReusable { get { return true; } }
}
更新
用户建议添加内容长度,但我不知道内容长度,对我来说,我们无法知道。
答案 0 :(得分:0)
设置内容长度标题,以便客户端知道预期的内容。