آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

راهنمایی در مورد اضافه کردن قابلیت pause و resume دانلود در پروژه file downloader استاد

mortex  10 سال پیش  10 سال پیش
+9 0

سلام از دوستان میخوام راهنمایی کنن که چطور میشه قابلیت توقف و دانلود دوباره رو به پروژه file downloader استاد که تو بخش پانزدهم توضیح داده شد اضافه کرد و اگه کسی اینکار رو کرده به ما هم یاد بده

با تشکر

0 0
اگه کسی منبع خاصی هم در این زمینه میدونه بگه (10 سال پیش)
0 0
منم دنبالشم همه چیز یک دانلودر خوب بهش اضافه کردم الا این دو مورد اگه به جایی رسیدی حتما بزار اینجا (10 سال پیش)
+1 0
من توی این مورد اعلام آمادگی میکنم ، هر موردی رو پیدا کردم اینجا میزارم < بهتره در مورد اینکه وسط کار اینترنت به مشکل بر بخوره و دانلود ما نقص پیدا نکنه هم کار بشه < (10 سال پیش)
0 0
داخل این سایت یک نمونه هست ولی خاطرم نیست قابلیت پاز و ریزوم داشت یا نه به هر حال امیدوارم کمکتون کنه لینک (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
کاشی زاده  10 سال پیش
+12 0

برای اینکه قابلیت Pause و Resume رو به پروژه دانلودرتون اضافه کنید باید در ابتدا 2 فولدر داشته باشید :

فولدر Temp : محل نگهداری موقت فایل های ناقص دیا در حال دانلود .

فولدر Original : جایی که قراره فایل ها توش ذخیره بشه .

زمانی که فایلی رو دانلود میکنید داده ها در فایلی داخل فولدر Temp ذخیره میشه و زمانی که دانلود به اتمام برسه این فایل به پوشه  Original منتقل میشه .

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

حالا دانلود متوقف شده و مثلا فایل مورد نظر شما با حجم 500 کیلوبایت بوده و 300 کیلوبایت اون دانلود شده و این فایل داخل پوشه Temp قرار داره .

برای اینکه بتونید ادامه دانلود رو انجام بدید باید قبل از دستور دانلود فایل ، پوشه Temp رو چک کنید که آیا همچین فایلی قبلا گرفته شده به صورت نصفه یا نه .

اگر فایل در این فولدر باشه یعنی قبلا قصد دانلودش رو داشتید و ممکنه با خطا مواجه شده باشه یا خود شما دانلود رو متوقف کرده باشید .

حجم فعلی فایل رو به Byte بخونید و در  header ، دستور دانلود به سرور بنویسید .

حالا جایی که دارید به فایلتون دسترسی پیدا میکنید یا همون OutputStream باید یک شرط بنویسید و بگید اگر از ادامه داشت دانلود میشید یک boolean به کانستراکتر OutputStream با مقدار true اضافه کن .

این مقدار true یعنی اینکه میخوای دیتا هایی که گرفته میشه به فایل قبلی بچسبه و فایل رو کامل کنه .

 

خلاصه توضیحاتی که گفتم بهمراه سورس در این لینک میتونید ببینید.

 

+1 0
اینجاشو نفهمیدم: حجم فعلی فایل رو به Byte بخونید و در header ، دستور دانلود به سرور بنویسید . حالا جایی که دارید به فایلتون دسترسی پیدا میکنید یا همون OutputStream باید یک شرط بنویسید و بگید اگر از ادامه داشت دانلود میشید یک boolean به کانستراکتر OutputStream با مقدار true اضافه کن . میشه کد بزارین (10 سال پیش)
0 0
محمد حسین جان ممنون ، خیلی خوب بود. من سعی میکنم بر اساس این آموزش اینکار رو انجام بدم و نتیجه اش رو اطلاع میدم. دوستان دیگه هم اگه پروژه file downloader استاد رو کامل کردن لطفا آموزشش رو بدن (10 سال پیش)
+1 0
سورس در لینک قرار داره میتونید برید داخلش و بخونیدش (10 سال پیش)
0 0
(10 سال پیش)
پاسخ به سوال 
omidronaldoo  10 سال پیش
+1 0

آقایه کاشی زاده منظورتون این تیکه کده؟

 HttpURLConnection connection =(HttpURLConnection) url.openConnection();if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){File file=newFile(DESTINATION_PATH);if(file.exists()){
             downloaded =(int) file.length();
             connection.setRequestProperty("Range","bytes="+(file.length())+"-");}}else{
        connection.setRequestProperty("Range","bytes="+ downloaded +"-");}
    connection.setDoInput(true);
    connection.setDoOutput(true);
    progressBar.setMax(connection.getContentLength());
     in =newBufferedInputStream(connection.getInputStream());
     fos=(downloaded==0)?newFileOutputStream(DESTINATION_PATH):newFileOutputStream(DESTINATION_PATH,true);
     bout =newBufferedOutputStream(fos,1024);byte[] data =newbyte[1024];int x =0;while((x = in.read(data,0,1024))>=0){
        bout.write(data,0, x);
         downloaded += x;
         progressBar.setProgress(downloaded);}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .