如何中断下载并警告用户?

时间:2014-07-04 08:36:39

标签: c# webclient httphandler httpcontext ashx

我正在写一个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; } }
}

更新

用户建议添加内容长度,但我不知道内容长度,对我来说,我们无法知道。

1 个答案:

答案 0 :(得分:0)

设置内容长度标题,以便客户端知道预期的内容。