• 断点续传


     /// <summary>
             /// 服务端: 
             /// </summary>
             /// <param name="FileName">更新文件包名</param>
             /// <param name="Offset">偏移</param>
             /// <param name="Count">每次读取字节数 单位KB</param>
             /// <returns>字节组</returns>
             [WebMethod(Description = "<b>大文件下载</b> 测试")]
             public byte[] getFile(string FileName, long Offset, int Count)
             {
                 //指定下载文件夹+文件名
                string strPath = @"E:\" + FileName;
    
                if (Offset < 0) { Offset = 0; }
    
                byte[] btBuf = new byte[Count];
    
                if (System.IO.File.Exists(strPath))
                 {
                     System.IO.FileStream fs = new System.IO.FileStream(strPath, System.IO.FileMode.Open); 
                     if (Offset < fs.Length)
                     {
                         if (0 < (int)(fs.Length - Offset) && (int)(fs.Length - Offset) < Count)
                         {
                             Count = (int)(fs.Length - Offset);
                         }
                         btBuf=new byte[Count];
    
                        fs.Seek(Offset, System.IO.SeekOrigin.Begin);
                         fs.Read(btBuf, 0, Count);
                     }
                     else
                     { btBuf = null; }
                     fs.Flush();
                     fs.Close();
                     fs.Dispose();                
                 }
                 return btBuf;
             }
    
    //--------------------------------客户端调用:
    
     
    
     private string DownLoadPath(string strClientFilePath, string fileName)
         {
             string result = "DownLoading...";
    
            ws1.Service s1 = new ws1.Service();  
    
            //本地数据
            System.IO.FileStream ns;
    
            //文件保存路径
            string strPath = strClientFilePath + @"" + fileName;
    
            //源文件名
            string serverFileName = @"Enterprise.msi";
    
            //传输数据长度,每次取字节组大小
            int count = 1024 * 100;
             
             //申请内存,存放取回的数据
            byte[] buffer = new byte[count];
    
            //文件偏移
            long offset = 0;
    
            //取回数据字节长度
            int bufferSize = 1;
    
            //-------------
             while (bufferSize > 0)
             {
                 
                 //读取本地文件信息
                ns = new System.IO.FileStream(strPath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);
                 
                 //获取本地数据长度,设定从服务器取数据偏移指针位置
                offset = ns.Length;
    
                //取服务端数据
                buffer = s1.getFile(serverFileName, offset, count);
                 if (buffer!=null)
                 {
                     ns.Seek(offset, System.IO.SeekOrigin.Begin);
                     count = buffer.Length;
                     ns.Write(buffer, 0, count);
                 }
                 else
                 {
                     bufferSize = -1;
                     result = "Successful !";
                 }
                 ns.Flush();
                 ns.Close();
                 ns.Dispose();
             }
             return result;        
         }
    View Code
  • 相关阅读:
    javaweb快速入门-学习笔记
    初学者如何学习JAVA(本文网摘收藏)
    实施职业发展路线-三界之外无量天
    GUI(图形界面编程)
    selenium IE自动化问题汇总
    python 读取excel数据插入到另外一个excel
    一个简单的查询功能的测试思路
    python os用法笔记
    Python学习笔记(基本功能的使用)
    python 调用封装好的模块
  • 原文地址:https://www.cnblogs.com/feige/p/6017365.html
Copyright © 2020-2023  润新知