mulky5858 2017-02-03 06:27 采纳率: 0%
浏览 1698

c#FTP上传断点续传的问题

class Program
{
    static bool uploadFile(string file_name, long offset = 0, string ftp_method = WebRequestMethods.Ftp.UploadFile)
    {
        try
        {
            FileInfo file_info = new FileInfo(file_name);
            if (file_info.Exists == false)
            {
                return false;
            }


            FtpWebRequest upload_request = (FtpWebRequest)FtpWebRequest.Create("url" + file_info.Name);
            upload_request.Credentials = new NetworkCredential("a", "a");
            upload_request.ContentLength = file_info.Length;
            upload_request.Timeout = 60000;
            upload_request.Method = ftp_method;
            upload_request.ContentOffset = offset;

            Stream request_stream = upload_request.GetRequestStream();
            FileStream file_stream = file_info.OpenRead();

            offset = copyDataToDest(Path.GetFileName(file_name), file_stream, request_stream, offset);

            if (offset != 0)
            {
                uploadFile(file_name, offset, WebRequestMethods.Ftp.AppendFile);
            }
        }
        catch (Exception ex)
        {
            return false;
        }

        return true;
    }

    static long copyDataToDest(string file_display_name, Stream source, Stream dest, long offset)
    {
        try
        {
            byte[] buffer = new byte[1024];
            source.Position = offset;
            int current_read_count = 0;
            while (true)
            {
                current_read_count = source.Read(buffer, 0, 1024);
                if (current_read_count == 0)
                {
                    offset = 0;
                    break;
                }
                dest.Write(buffer, 0, current_read_count);
                dest.Flush();
                offset += current_read_count;
                Console.WriteLine(offset / 1024 / 1024 + "/" + source.Length / 1024 / 1024 + "MB");
            }
        }
        catch
        {

        }
        try
        {
            source.Close();
            dest.Close();
        }
        catch
        {

        }
        return offset;
    }

    static void Main(string[] args)
    {
        uploadFile("D:\\1.data");
    }


}

以上是我的上传代码,如果产生断点续传,续传的文件就会出错,请问哪里写错了?

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-02-03 15:45
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器