PDA

View Full Version : سوال: دانلود فایل از یک سرور به سرور دیگه



YourWorldToday
پنج شنبه 07 آبان 1388, 23:38 عصر
با سلام خدمت دوستان گرامی
من در برنامه قرار که صفحه داشته باشم که این صفحه آدرس یه فایل رو از روی یک سرور دیگه دریافت می کنه(Rapidshare) و سپس شروع به دانلود او فایل از مسیر که بهش دادیم درون سرور خودمن می کنه.
چطور میشه سرور فقط لینک رو بگیره و شروع به دانلود کنه و ما هم نیاز نباشه که به اینترنت وصل باشیم(فقط لینک رو بدیم و خداحافظ)
با تشکر.

Chabok
جمعه 08 آبان 1388, 01:19 صبح
با سلام

برای دانلود فایل از روی یک مسیر می توانید از این 2 روش استفاده کنید :


روش اول : استفاده از HttpRequest برای ارسال درخواست Http به صفحه مورد نظر و سپس توسط HttpResponse پاسخ را دریافت نمایید .

روش دوم : استفاده از کلاس WebClient در فضای نام System.Net :

byte[] byt = new WebClient().DownloadData("http://i.microsoft.com/global/En/us/PublishingImages/SLWindowPane/OCT_16_GEN_F.jpg");درباره این موارد جستجو کنید .

ولی بحث بر سر دانلود از سایت هایی مانند Rapidshare کمی متفاوت است .

زیرا شما به صورت معمولی نمی توانید فایل را مستقیماً دانلود کنید .

برای این کار نیاز به شناسه کاربری دارید که با ارائه این شناسه فایل بصورت اصطلاحاً لینک مستقیم در اختیار شما قرار می گیرد .

برای ارائه شناسه کاربری خود می توانید از 2 راه استفاده کنید :

1.ارائه شناسه کاربری از طریق Cookie که باید بر روی HttpRequest تنظیم شود که کار ساده ای نیست .
زیرا باید نحوه ثبت کوکی این سایت ها را بدانید که خب نمی دانید .
پس باید یکبار با مرورگر خود وارد بخش Premium شوید تا کوکی مورد نظر برای شما ثبت شود و سپس اطلاعات کوکی درخواست HttpRequest را از آن کپی برداری کنید .
(که مطمئن نیستم شدنی باشه)

2.چسباندن شناسه کاربری به مسیر فایل :

http://user:password@rapidshare.com/files/1234/file.zip

و شاید راههای بهتری نیز وجود داشته باشه .

پس از همه این تفاسیر در صورتی که میخواهید پس از ارسال لینک سرور شروع به دانلود کند و شما نیز در حالت انتظار برای پایان عملیات نباشید می توانید این کار را در یک Thread انجام دهید .
درباره این مورد هم جستجو کنید .

موفق باشید .

YourWorldToday
جمعه 08 آبان 1388, 09:48 صبح
ضمن تشکر از پاسخ شما
ببینید وقتی شما به صورت free از سایت rapidshare استفاده می کنید بسته به اندازه فایل شما چند ثانیه باید صبر کنید تا لینک غیر مستقیم رو دریافت کنید.
منظور من اینکه وقتی لینک غیر مستقیم رو دریافت کردیم این لینک رو به سرور خودمون بدیم و سرور شروع به دانلود کنه.خوب حالا چرا قرار این کار رو انجام بدیم- به این دلیل که وقتی شما از سمت کامپیوتر خودتون شروع به دانلود می کنید امکان داره که در زمان دانلود اینترنت قطع بشه و شما مجبور هستید که دوباره از اول شروع به دانلود کنید.

WebClient که شما در بالا اوردید یه بخش از این برنامه است - بخش اصلی زمانیکه شما لینک رو به سرور دادید و پنجره IE رو می بندید. وقتی که این کار و انجام دادید چون ارتباط با سرور خودمون قطع شده اصول دانلود هم قطع میشه.

من می خوام ادرس رو به سرور بدم و کامپیوتر رو خاموش کنم - و سرور من همچنان فایل رو دانلود
کنه.

مسئله اصلی انجاست.

Chabok
جمعه 08 آبان 1388, 18:32 عصر
بخش اصلی زمانیکه شما لینک رو به سرور دادید و پنجره IE رو می بندید. وقتی که این کار و انجام دادید چون ارتباط با سرور خودمون قطع شده اصول دانلود هم قطع میشه.

خیر دوست عزیز . خدمت شما در بالا عرض کردم .
اگر شما در یک Thread کد مربوط به دانلود را اجرا کنید کد شما در Thread ادامه پیدا میکند و Context شما به پایان می رسد .یعنی این عملیات دیگر در Context شما نیست .
نگران این قسمت نباشید .

در مورد Thread ها در ASP.net تحقیق کنید .