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

我用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日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。