All pastes #230159 Raw Edit

Anonymous

public text v1 · immutable
#230159 ·published 2006-10-31 03:52 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;

namespace sDown
{
    public partial class sDown : Form
    {
        private string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
        private static long beginLenth = 0;
        private static long totalLength = 0;

        public sDown()
        {
            InitializeComponent();
        }

        public static int DownloadFile(String remoteFilename, String localFilename)
        {
            //THANK YOU!: http://www.codeguru.com/csharp/csharp/cs_network/internetweb/article.php/c7005/
            // Function will return the number of bytes processed
            // to the caller. Initialize to 0 here.
            int bytesProcessed = 0;

            // Assign values to these objects here so that they can
            // be referenced in the finally block
            Stream remoteStream = null;
            Stream localStream = null;
            WebResponse response = null;

            // Use a try/catch/finally block as both the WebRequest and Stream
            // classes throw exceptions upon error
            try
            {
                // Create a request for the specified remote file name
                WebRequest request = WebRequest.Create(remoteFilename);
                if (request != null)
                {
                    // Send the request to the server and retrieve the
                    // WebResponse object
                    response = request.GetResponse();
                    if (response != null)
                    {
                        // Once the WebResponse object has been retrieved,
                        // get the stream object associated with the response's data
                        remoteStream = response.GetResponseStream();
                        beginLenth = response.ContentLength;

                        // Create the local file
                        localStream = File.Create(localFilename);

                        // Allocate a 1k buffer
                        byte[] buffer = new byte[1024];
                        int bytesRead;

                        // Simple do/while loop to read from stream until
                        // no bytes are returned
                        do
                        {
                            // Read data (up to 1k) from the stream
                            bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                            // Write the data to the local file
                            localStream.Write(buffer, 0, bytesRead);

                            // Increment total bytes processed
                            bytesProcessed += bytesRead;
                        } while (bytesRead > 0);
                    }
                }
            }
            catch
            {
            }
            finally
            {
                // Close the response and streams objects here
                // to make sure they're closed even if an exception
                // is thrown at some point
                if (response != null) response.Close();
                if (remoteStream != null) remoteStream.Close();
                if (localStream != null) localStream.Close();
            }

            // Return total bytes processed to caller.
            totalLength = bytesProcessed;
            return bytesProcessed;
        }

        /*private static int GetLength(string inUrl)
        {
            int x = 0;
            WebRequest request = WebRequest.Create(inUrl);
            WebResponse response = null;

            if (request != null)
            {
                response = request.GetResponse();
                if (response != null)
                {
                    x = (int)response.ContentLength;
                }
            }
            return x;
        }*/

        private void menuItem2_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            string[] split = textBoxURL.Text.Split('/');
            string tmp = split[(split.Length - 1)];

            if (textBoxSaveAs.Text == "")
            {
                int read = DownloadFile(textBoxURL.Text, path + "\\" + tmp);
                debug.Text = "" + read + " bytes written.";
            }
            else
            {
                int read = DownloadFile(textBoxURL.Text, path + "\\" + textBoxSaveAs.Text);
                debug.Text = "" + read + " bytes written.";
            }
        }

        private void textBoxSaveAs_GotFocus(object sender, EventArgs e)
        {
            if (textBoxSaveAs.Text == "")
            {
                string[] split = textBoxURL.Text.Split('/');
                textBoxSaveAs.Text = split[(split.Length - 1)];
            }
        }

        /*private void BeginProgress()
        {
            progressBar.Invoke(new EventHandler(UpdateProgress));
        }

        private void UpdateProgress(object sender, EventArgs e)
        {
            progressBar.Value = (int)((beginLenth / GetLength(textBoxURL.Text)) * 100);
            debug.Text = beginLenth.ToString();
        }*/
    }
}