qq_37727187 2023-01-04 20:46 采纳率: 89.8%
浏览 34
已结题

我用ftp下载execl,能下载,但是都是0kb

我用ftp下载execl,能下载,但是都是0kb,断点进去之后是 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();这句之后就不执行,请问是啥原因呢

  public void DownloadFile( string fileName)
        {
            FtpWebRequest reqFTP;
            try
            {
                FileStream fileStream = new FileStream(Environment.CurrentDirectory  + fileName, FileMode.Create);

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://192.168.0.247:1356/" + fileName));
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential("ftp2023", "powev888888");

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream responseStream = response.GetResponseStream();//从ftp响应中获得响应流

                //long cl = response.ContentLength;
                byte[] buffer = new byte[1024];
                int readCount;

                readCount = responseStream.Read(buffer, 0, buffer.Length);//从ftp的responseStream读取数据到buffer中
                while (readCount > 0)
                {
                    fileStream.Write(buffer, 0, readCount);//从buffer读取数据到fileStream中,完成下载
                    readCount = responseStream.Read(buffer, 0, buffer.Length);
                }

                responseStream.Close();
                fileStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }


  • 写回答

1条回答 默认 最新

  • |__WhoAmI__| 2023-01-04 21:03
    关注

    但是如果在执行FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse()时出现异常,就会导致控制流不会继续往下执行。可以在该语句之前添加一个try-catch块,以便在发生错误时捕获它并打印错误信息,以便更好地了解错误原因。

    try
    {
        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
        // 剩余代码
    }
    catch (WebException ex)
    {
        Console.WriteLine("Error: " + ex.Message);
    }
    

    在这里,ex.Message将包含错误信息,这有助于了解导致错误的原因。

    此外还可以在该语句之前添加一个if语句,检查FTP服务器是否成功响应:

    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    if (response.StatusCode == FtpStatusCode.ClosingData)
    {
        // 剩余代码
    }
    else
    {
        Console.WriteLine("Error: " + response.StatusDescription);
    }
    

    在这里,response.StatusDescription将包含有关错误的信息。
    仅供参考,望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 创建了问题 1月4日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装