public DownloadProgressEventArgs(FileDownload file, long downloaded)
 {
     File       = file;
     Downloaded = downloaded;
 }
 public DownloadProgressEventArgs(FileDownload file, long downloaded)
 {
     File = file;
     Downloaded = downloaded;
 }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }