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();
}*/
}
}