public DownloadProgressEventArgs(FileDownload file, long downloaded) { File = file; Downloaded = downloaded; }
public DownloadProgressEventArgs(FileDownload file, long downloaded) { File = file; Downloaded = downloaded; }
public void Execute(FileDownload file) { Abort = false; _file = file; //HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(_release.Url); HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(_file.Url); newRequest.Timeout = Timeout; //newRequest.Host = "www.videotron.com"; //newRequest.Referer = referer; newRequest.ProtocolVersion = HttpVersion.Version10; newRequest.UserAgent = UserAgent; newRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); newRequest.Proxy = HttpWebRequest.DefaultWebProxy; newRequest.Proxy.Credentials = CredentialCache.DefaultCredentials; newRequest.KeepAlive = true; newRequest.AllowAutoRedirect = true; using (HttpWebResponse response = (HttpWebResponse)newRequest.GetResponse()) { _file.Size = response.ContentLength; // Création d'un fichier vide pour réserver la place _file.Filename = IncrementFilename(_file.Filename); _file.Temp = IncrementFilename(_file.Filename + ".tmp"); File.WriteAllText(_file.Filename, string.Empty); // Écriture dans un fichier temporaire using (FileStream fileStream = new FileStream(_file.Temp, FileMode.CreateNew, FileAccess.Write, FileShare.None)) { using (BinaryWriter writer = new BinaryWriter(fileStream)) { using (Stream reader = response.GetResponseStream()) { byte[] buffer = new byte[_bufferSize]; int count; long downloaded = 0; do { count = reader.Read(buffer, 0, buffer.Length); writer.Write(buffer, 0, count); downloaded += count; DoDownloadProgress(new DownloadProgressEventArgs(_file, downloaded)); } while (count > 0 && !Abort); } writer.Flush(); } } } if (Abort) { File.Delete(_file.Filename); File.Delete(_file.Temp); } else { // Le fichier est téléchargé, il faut le renommer File.Delete(_file.Filename); File.Move(_file.Temp, _file.Filename); } }
public void Execute(FileDownload file) { Abort = false; _file = file; //HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(_release.Url); HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(_file.Url); newRequest.Timeout = Timeout; //newRequest.Host = "www.videotron.com"; //newRequest.Referer = referer; newRequest.ProtocolVersion = HttpVersion.Version10; newRequest.UserAgent = UserAgent; newRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); newRequest.Proxy = HttpWebRequest.DefaultWebProxy; newRequest.Proxy.Credentials = CredentialCache.DefaultCredentials; newRequest.KeepAlive = true; newRequest.AllowAutoRedirect = true; using (HttpWebResponse response = (HttpWebResponse)newRequest.GetResponse()) { _file.Size = response.ContentLength; // Création d'un fichier vide pour réserver la place _file.Filename = IncrementFilename(_file.Filename); _file.Temp = IncrementFilename(_file.Filename + ".tmp"); File.WriteAllText(_file.Filename, string.Empty); // Écriture dans un fichier temporaire using (FileStream fileStream = new FileStream(_file.Temp, FileMode.CreateNew, FileAccess.Write, FileShare.None)) { using (BinaryWriter writer = new BinaryWriter(fileStream)) { using (Stream reader = response.GetResponseStream()) { byte[] buffer = new byte[_bufferSize]; int count; long downloaded = 0; do { count = reader.Read(buffer, 0, buffer.Length); writer.Write(buffer, 0, count); downloaded += count; DoDownloadProgress(new DownloadProgressEventArgs(_file, downloaded)); } while (count > 0 && !Abort); } writer.Flush(); } } } if (Abort) { File.Delete(_file.Filename); File.Delete(_file.Temp); } else { // Le fichier est téléchargé, il faut le renommer File.Delete(_file.Filename); File.Move(_file.Temp, _file.Filename); } }