1. 程式人生 > >C#檔案下載(實現斷點續傳)

C#檔案下載(實現斷點續傳)

  1    public class WebDown
  2     {
  4         /// 下載檔案方法
  6         /// 檔案儲存路徑和檔名
  7         /// 返回伺服器檔名
  9         public static bool DeownloadFile(string sourceFile, string desFile)
 10         {
 11             bool flag = false;
 12             long SPosition = 0;
 13             FileStream FStream = null
; 14 Stream myStream = null; 15 string fileName = sourceFile.Substring(sourceFile.LastIndexOf(@"/") + 1); 16 if (desFile.EndsWith("\\")) 17 { 18 desFile = desFile + fileName; 19 } 20 else 21 { 22
desFile = desFile + "\\" + fileName; 23 } 24 try 25 { 26 //判斷要下載的資料夾是否存在 27 if (File.Exists(desFile)) 28 { 29 //開啟上次下載的檔案 30 FStream = File.OpenWrite(desFile);
31 //獲取已經下載的長度 32 SPosition = FStream.Length; 33 long serverFileLength = GetHttpLength(sourceFile); 34 if (SPosition == serverFileLength) 35 {//檔案是完整的,直接結束下載任務 36 return true; 37 } 38 FStream.Seek(SPosition, SeekOrigin.Current); 39 } 40 else 41 { 42 //檔案不儲存建立一個檔案 43 FStream = new FileStream(desFile, FileMode.Create); 44 SPosition = 0; 45 } 46 //開啟網路連線 47 HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(sourceFile); 48 if (SPosition > 0) 49 { 50 myRequest.AddRange(SPosition);             //設定Range值 51 } 52 //向伺服器請求,獲得伺服器的迴應資料流 53 myStream = myRequest.GetResponse().GetResponseStream(); 54 //定義一個位元組資料 55 byte[] btContent = new byte[512]; 56 int intSize = 0; 57 intSize = myStream.Read(btContent, 0, 512); 58 while (intSize > 0) 59 { 60 FStream.Write(btContent, 0, intSize); 61 intSize = myStream.Read(btContent, 0, 512); 62 } 63 flag = true;        //返回true下載成功 64 } 65 catch (Exception ex) 66 { 67 SysLog.WriteTxtLog("下載檔案時異常:" + ex.Message); 68 } 69 finally 70 { 71 //關閉流 72 if (myStream != null) 73 { 74 myStream.Close(); 75 myStream.Dispose(); 76 } 77 if (FStream != null) 78 { 79 FStream.Close(); 80 FStream.Dispose(); 81 } 82 } 83 return flag; 84 } 85 static long GetHttpLength(string url) 86 { 87 long length = 0; 88 try 89 { 90 var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); 91 req.Method = "HEAD"; 92 req.Timeout = 5000; 93 var res = (HttpWebResponse)req.GetResponse(); 94 if (res.StatusCode == HttpStatusCode.OK) 95 { 96 length = res.ContentLength; 97 } 98 res.Close(); 99 return length; 100 } 101 catch (WebException wex) 102 { 103 return 0; 104 } 105 } 106 }

相關推薦

C#檔案下載實現斷點

1 public class WebDown 2 { 4 /// 下載檔案方法 6 /// 檔案儲存路徑和檔名 7 /// 返回伺服器檔名 9 public static bool DeownloadFil

Android檔案下載實現斷點

http://www.ideasandroid.com/archives/328#more-328 本文將介紹在android平臺下如何實現多執行緒下載,大家都知道,android平臺使用java做為開發語言,所以java中支援的多執行緒下載方式在android平臺下都支援,

Python實現斷點下載檔案,大檔案下載還怕下載到一半就斷了嗎?不存在!

這篇部落格簡單介紹python斷點續傳下載檔案,並加入花哨的下載進度顯示方法,涉及Python檔案操作的技巧,和一些函式庫的使用。 環境 Python 3.6 requests模組 對應檔案的下載連結 (要下載的檔案必須支援斷點續傳) (是不是很少東西

(二)使用libcurl實現獲取目標檔案大小, 下載進度顯示, 斷點等功能

本節jwisp為大家舉例說明如果使用上節介紹的函式和引數,在使用libcurl的過程中,如何獲取下載目標檔案的大小 , 下載進度條,斷點續傳等,這些基本的函式,將為jwisp在最後處理下載過程異常中斷等問題提供支援. 1.      編寫得到下載目標檔案的大小的函式 lo

python實現斷點下載檔案

最近的任務裡有一個功能是要我從日誌伺服器實時跟新日誌到本地,日誌在不斷新增內容就需要我隔一段時間從上次下載的位置繼續下載,並寫入本地檔案上次寫完的位置後面。 headers = {'Range': 'bytes=%d-' % local_f

HttpURLConnection方式下載檔案實現斷點

public class DownloadTest { public static void main(String[] args) { try { File file = new File("test.apk");

ceph儲存的S3接口實現支持斷點

底層 讀取數據 put 準備 version throws sdk obj tle 最近公司準備接ceph儲存,研究了一番,準備用亞馬遜的s3接口實現,實現類如下: /** * Title: S3Manager * Description: Ceph儲

java多執行緒實現斷點下載

public class DownloadThread extends Thread {private int id;private int startindex;private int endindex;private String path;static int threadfinishedcount=0

http range實現斷點斷點

使用http range實現斷點續傳(伺服器端): public void downRangeFile( File downloadFile, HttpServletResponse response,

FTP下用reget實現斷點 FTP下get顯示進度

同事在Linux通過FTP獲取一個1.3G的大檔案,傳了一個上午,結果在1.1G左右的時候,資料鏈路斷開,ftp命令假死狀態,檔案大小不在增加。如果重新匯入,下午肯定完不成了,得考慮斷點續傳,以前都是通過windows下的工具完成的,目前的問題是:在Unix下如何處理呢?方法

檔案支援斷點/大檔案切片上

//拖拽上傳開始 //-1.禁止瀏覽器開啟檔案行為 //拖離 document.addEventListener("drop",function(e){ e.preventDefault(); }) //拖後放 document.add

Java多執行緒下載器FileDownloader支援斷點、代理等功能

前言 在我的任務清單中,很早就有了一個檔案下載器,但一直忙著沒空去寫。最近剛好放假,便抽了些時間完成了下文中的這個下載器。 介紹 同樣的,還是先上效果圖吧。 Jar包地址位於 FileDownloader 目前實現的主要功能有: 多執行緒下載 斷點續傳 自定義頭部等 即將完成的包括: 新增代理功

用AsyncTask實現斷點

asynctask實現文件下載與斷點續傳 在學習四大組件之一的service時,正好可以利用asyncTask 和OKhttp來進行斷點續傳,並在手機的前臺顯示下載進度。 嘗試下載的是Oracle官網上的jdk1.7 在AS中使用OKhttp,只需要簡單的在app/build.grad

rsync 實現斷點

direct pan 悲劇 文件 byte font scp命令 size receive Linux 主機之間即時傳送文件,scp命令大家都很熟悉但當要傳送的文件較大,過程中如果網絡中斷了,就比較悲劇了。這時候可以考慮使用rsync命令替代scp,實現斷點續傳文件。 試驗

用Java實現斷點 (HTTP)

斷點續傳的原理 其實斷點續傳的原理很簡單,就是在 Http 的請求上和一般的下載有所不同而已。 打個比方,瀏覽器請求伺服器上的一個文時,所發出的請求如下: 假設伺服器域名為 www.sjtu.edu.cn,檔名為 down.zip。 GET /down.zip HTTP/1

XUtils開源框架的使用HttpUtils支援多執行緒斷點

XUtils專案下載地址:https://github.com/wyouflf/xUtils •XUtils中包含的四大模組: 1、DbUtils模組 2、ViewUtils模組 3、HttpUtils模組: ◦支援同步,非同步方式的請求; ◦支援大檔案上傳,上傳大檔案不會oom

5.2 SpringBoot實現斷點功能 > 我的程式猿之路:第四十二章

  功能使用webuploader元件分片下載檔案 文件地址: http://fex.baidu.com/webuploader/document.html 從  http://fex.baidu.com/webuploader/download.html中下載 用到的是:

iOS實現斷點

網路下載是我們在專案中經常要用到的功能,如果是小檔案的下載,比如圖片和文字之類的,我們可以直接請求源地址,然後一次下載完畢。但是如果是下載較大的音訊和視訊檔案,不可能一次下載完畢,使用者可能下載一段時間,關閉程式,回家接著下載。這個時候,就需要實現斷點續傳的功能。讓使用者可以隨時暫停下載,下次開始下

【Flume】flume檔案監控的source元件開發,增量傳輸檔案內容,支援斷點功能

基於flume-ng中原有exec的source型別,通過tail依賴於作業系統去監聽檔案內容變化,其次,不支援斷點續傳的功能,特此,自行開發了一個元件,大家可以看看,一起探討: 該元件特點如下: 1、一個source對應一個檔案監控 2、實時監控檔案變化 3、增量傳輸檔

Android下載-實時進度-斷點

概述 帶顯示進度和斷點續傳的下載示例 使用Okhttp框架 思路 獲取下載檔案的總大小,獲取本地檔案,如果不存在,就下載,存在,就獲取檔案的大小, 如果本地檔案的大小與網路上檔案的大小,就提示下載完成。 如果本地檔案大小 < 網路上檔案的大小,