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

我用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 电脑出问题了,说是usbmom注册表没
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?
  • ¥15 vs2022无法联网