我想从FTP站点下载文件,点击下载时弹出下载对话框,但发现下载的文件和站点中的文件不一样,文件变长了,文件内容在原文件内容后还加上了一些东西,从内容上看是当前页面的aspx文件。请教各位高手,怎样规避这种现象啊?以下是我的代码:protected void OnLink(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "OnLink")
            {
                int index = Convert.ToInt32(e.CommandArgument);                string serverUri = filesTable.Rows[index].ItemArray[0].ToString();               
                //使用FTP方式下载文件                int loc = serverUri.LastIndexOf("/");
                if (loc <= 0)
                {
                    return;
                }
                string downLoadFileName = serverUri.Substring(loc + 1);                Response.Clear();                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(downLoadFileName, System.Text.Encoding.UTF8));                if (serverUri != null)
                {                    byte[] _data;                    _data = this.LoadFromURL(serverUri);                    Response.BinaryWrite(_data);                    Response.Flush();                }               
            }        }        protected byte[] LoadFromURL(string url)
        {            WebRequest wr = WebRequest.Create(url);            byte[] result;            byte[] buffer = new byte[4096];            using (WebResponse response = wr.GetResponse())
            {                using (Stream responseStream = response.GetResponseStream())
                {                    using (MemoryStream ms = new MemoryStream())
                    {                        int count = 0;                        do
                        {                            count = responseStream.Read(buffer, 0, buffer.Length);                            ms.Write(buffer, 0, count);                        } while (count != 0);                        result = ms.ToArray();                    }                }            }            return result;        }    }

解决方案 »

  1.   

    把aspx上的东西全部删除。
    或者加上 Response.End()
      

  2.   

    加上了Response.End()似乎不行哦,这样下载对话框只闪了一下就没有了,根本就没有下载。
      

  3.   

    "attachment;filename=" + HttpUtility.UrlEncode(downLoadFileName, System.Text.Encoding.UTF8));文件名 后面的HttpUtility.UrlEncode(downLoadFileName, System.Text.Encoding.UTF8)改个默认的