PDA

View Full Version : دانلود فایل بایت به بایت



Argonod
جمعه 27 فروردین 1389, 23:11 عصر
با سلام خدمت اساتید محترم

یه سورس یا مثال خوب میخوام در رابطه با دانلود فایل از یک لینک مشخص که یوزر و پسورد داره
ضمنا میخوام که دانلود بصورت بایت به بایت انجام بشه
چون دانلود قراره که از یه بایت مشخص تا یه بایت مشخص دیگه صورت بگیره

پیشاپیش سپاسگذارم

Argonod
شنبه 28 فروردین 1389, 10:37 صبح
اینقدر پیش پا افتاده هست این سوال من که دوستان حتی یه نظر هم نمیدن؟

یه مثال میزنم که دقیقا بگم چی میخوام

یه نرم افزار میخوام بنویسم که مثلا از سایت رپید شیر با اسم و پسورد کاربر فایل بگیره

به نظرم خیلی باید ساده باشه اما نمیدونم از کجا باید شروع کنم
گوگل رو هم زیرو رو کردم

پیشاپیش ممنون

ramin2nt2
شنبه 28 فروردین 1389, 11:08 صبح
سلام
من اینو بلدم. امیدوارم به کار شما بخوره. عینا از سورس یکی از برنامه هام براتون کپی کردم.



WebClient downloader = new WebClient();


downloader.DownloadProgressChanged +=new DownloadProgressChangedEventHandler(downloader_Dow nloadArticleProgressChanged);
downloader.DownloadFileCompleted +=new AsyncCompletedEventHandler(downloader_DownloadArti cleFileCompleted);

downloader.DownloadFileAsync(new Uri("http://127.0.0.1/locax/update/" + article_zipfile + ".zip"), picSource);



private void downloader_DownloadArticleProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
lblprgbar.Text = ((e.TotalBytesToReceive - e.BytesReceived)/1024) + " کیلوبایت باقیمانده " + " %" + e.ProgressPercentage;
lblprgbar.Update();
prgbar.Value = e.ProgressPercentage;
}

private void downloader_DownloadArticleFileCompleted(object sender, AsyncCompletedEventArgs e)
{
txtcopying.Visible = false;
lblstatus.Visible = false;

try
{
ZipFile zip = ZipFile.Read(picSource);

foreach (ZipEntry ze in zip)
{
ze.Extract(Tools.getAppPath() + "\\data\\contents", ExtractExistingFileAction.OverwriteSilently);
}

zip.Dispose();
}
catch
{
txtresult.ForeColor = Color.Red;
txtresult.Text = "خطا در کپی کردن تصاویر";
cmdUpdate.Enabled = true;
return;
}

lblprgbar.RightToLeft = RightToLeft.No;
lblprgbar.Text = "100%";

string data = string.Format("action=endupdate&filename={0}" , article_zipfile);
dataStream = server.interactionServer("http://127.0.0.1/mardoman/update/index.php", data);

//delete zip file
File.Delete(picSource);

//create directory
if (!Directory.Exists(Tools.getAppPath() + "\\data\\contents\\content"))
Directory.CreateDirectory(Tools.getAppPath() + "\\data\\contents\\content");

//change extension
DirectoryInfo dir = new DirectoryInfo(Tools.getAppPath() + "\\data\\contents\\content");

string new_file = string.Empty;//this var holds newfile name with new extension

foreach (FileInfo f in dir.GetFiles())
{
//set extension
if (f.Extension == ".gif")
new_file = Path.ChangeExtension(f.Name, ".dto");
else if (f.Extension == ".jpg")
new_file = Path.ChangeExtension(f.Name, ".dtt");
else if (f.Extension == ".png")
new_file = Path.ChangeExtension(f.Name, ".dtp");
//end set extension

if (!File.Exists(Tools.getAppPath() + "\\data\\contents\\phs\\" + new_file))
f.MoveTo(Tools.getAppPath() + "\\data\\contents\\phs\\" + new_file); //if file not exists ---> move from temp file
else
File.Delete(f.FullName); // delete from temporary file

}



}

Argonod
شنبه 28 فروردین 1389, 11:57 صبح
ممنون دوست عزیز

ولی من همانطوری که گفتم باید بصورت بایت به بایت و همچنین از یک بایت مشخص تا یک بایت مشخص دیگه شروع به دانلود کنه

مثلا اینطوری بگم مثل اینترنت دانلود منیجر که قابلیت ادامه دانلود داره

اگه دوستان یه سورس خوب معرفی کنند ممنون میشم