رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.

AnswerCenter

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

  • مرجع پاسخگویی
  • تولید آموزش
  • سفارش پروژه

درخواست سفارش پروژه

اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


بایگانی شده

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

alirezakazemizaroomi

آموزش دانلود فایل با گرفتن لینک دانلود از دیتابیس و ذخیره آن با لایبرری RSAsyncDownloader

پست های پیشنهاد شده

alirezakazemizaroomi    437

کاربر نیمه فعال

سلام

هدف از این آموزش مشکل کتابخونه httpjob در دانلود و کدنویسیهای زیاد اون وهمچنین مشکل کنسل کردن دانلود اون بود چون در کنسل کردن باید از کد استوپ سرویس استفاده میکردیم کلا همه فایلهای در حال دانلودو کنسل میکرد وکلا برنامه فورس کلوز میشد...

بریم سراغ آموزش:

در اینجا با استفاده از کتابخونه"RSAsyncDownloader" لینکهای فایلو که داخل دیتابیس هستنو دانلود کرده وداخل پوشه "zaker" ذخیره میکنیم.

کدها:


Sub Process_Globals
   Dim pat() As String
End Sub



Sub Globals
   Dim rsa As RSAsyncDownloader
   Dim ay As Button
   Dim link,name,dier As String
   Private btdown As Button
	  Private btcan As Button
   Private ScrollView1 As ScrollView
	  Private Panel1 As Panel
End Sub



Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("scv")
    File.MakeDir(File.DirRootExternal, "hazf")
    File.MakeDir(File.DirRootExternal, "zaker")
    If File.Exists(File.DirInternal,"film.db")=False Then
	  File.Copy(File.DirAssets,"film.db",File.DirInternal,"film.db")
	  End If
    Cur1=sql1.ExecQuery("SELECT * From tbl33 WHERE id BETWEEN 78 AND 85")
    or i=0 To Cur1.RowCount-1
    Cur1.Position=i
    For i=0 To Cur1.RowCount-1
    Cur1.Position=i
	  Dim p As Panel
    p.Initialize("p")
    Dim Stopint = 10%y
    ScrollView1.Panel.AddView(p,0,Stopint,100%x,100%Y)
	Stopint=Stopint+30%y
    p.LoadLayout("pnl")
    btcan.Text=Cur1.GetString("name")
    Panel1.tag = Cur1.GetString("down") & "#" & Cur1.GetString("name")
btdown.tag = Cur1.GetString("down") & "#" & Cur1.GetString("name")
    Next
End Sub




Sub btdown_Click
   ay = Sender
   Dim pat() As String = Regex.split("#",ay.tag)
   If File.Exists(File.DirRootExternal & "/zaker",pat(1)) = False Then
   name=pat(1) 
   dier=File.DirRootExternal& "/zaker"
   link=pat(0)
   rsa.Initialize("rsa")
   rsa.FileName = pat(1) 
   rsa.Directory =File.DirRootExternal& "/hazf"
   rsa.Download(link)
   end if
End Sub




Private Sub rsa_Finished (Result As String)   
    File.Copy(File.DirRootExternal& "/hazf",pat(1),dier,name)
    ToastMessageShow("در پوشه zaker ذخیره شد",False)
End Sub



Sub btcan_Click
   rsa.Cancel(True)
End Sub

تو ضیحات:

در بالا دو تا لایوت تعریف کردم؛یکی لایوت"scv" که داخلش فقط یه اسکرول ویو"ScrollView1 "گذاشتم؛ویه لایوت"pnl" که داخلش یه پنل هست"Panel1" که داخل این پنل دکمه های"btdown" و "btcan" قرار دادم.؛تو دیتابیسمم تو ستون "down" لینکای دانلودمو گذاشتم.

در مورد دکمه کنسل "btcan"نیز اینطوری شد که چون کد"rsa.Cancel(True)" دانلودو کنسل میکنه ولی تا همونجایی که دانلود شده بودو ذخیره میکنه و بقیشو دیگه دانلود نمیکنه؛برا همین ما تو کد"rsa.Directory =File.DirRootExternal& "/hazf""گفتیم وقتی دانلود شد بره تو پوشه "hazf" که اگه وسط دانلودم کنسل زده شد فایل نصفه ذخیره شده بره تو این پوشه که دیگه تو برنامه نشون داده نشه؛بعد تو ساب" rsa_Finished" گفتیم فقط فایلهایی که کامل دانلود شدن رو کپی کن تو پوشه"zaker"...

لینک کتابخونه:  zip.gif  Async.zip   6.38K   14 تعداد دریافت ه

اینم لینک سورس 1:   

http://s3.picofile.com/file/8225491884/%D8%A2%D9%85%D9%88%D8%B2%D8%B41.rar.html

 

اینم لینک سورس دوم:

http://s6.picofile.com/file/8229552876/%D8%A2%D9%85%D9%88%D8%B2%D8%B421.rar.html

بقیه کدهام که مشخصه،اگه جایشو متوجه نشدین بپرسین :gol: 

 

اگه حال کردین با این آموزش یه صلوات برا سلامتی خودت و خونوادت و امام زمان(عج)و رهبرمعظم انقلاب(حفظه الله) بفرستین

اگرم خیلی حال کردین یه فاتحه به روح مرحوم سید جواد ذاکر(رحمه الله) بفرستین :cheshmak:      

 

 

                                                                                                                                                      thumbs_up_thumbs_up_vote_like.png

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezn    68

کاربر رو به رشد

میشه لطفاً دیاتبیس رو هم بزارین تا بفهمم چیکار کردین؟

:gol:  :cheshmak:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

میشه لطفاً دیاتبیس رو هم بزارین تا بفهمم چیکار کردین؟

:gol:  :cheshmak:

داداش یه دیتابیس به اسم"film.db"دارم که اسم تیبلشم"tbl33" تو دیتابیس فقط سه تا ستون دارم"id"؛"name"؛"down"؛که داخل down لینکای دانلود قرار داره؛بقیشم واضحه

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
علی علایی    161

کاربر نیمه فعال

این خطو خطا میده 

 File.Copy(File.DirRootExternal & "/hazf",pat(1),dier,name1) 

اینم تصویرش 

Capture1.PNG

 

اینم کدهام 

Sub Process_Globals
	
	 Dim pat() As String
End Sub

Sub Globals
	
	Dim rsa As RSAsyncDownloader
	
	Dim ay As Button
	Dim link,name1,dier As String
 
 
	Private btncancel As Button
	Private btndownload As Button
	Private Label1 As Label
	Private Panel1 As Panel
	
	Dim sql1 As SQL
	Dim cur1 As Cursor
	Dim Stopint As Int=5%y
	Private ScrollView1 As ScrollView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	'Activity.LoadLayout("Layout1") 
	Activity.LoadLayout("L1")
	rsa.Initialize("rsa")
File.MakeDir(File.DirRootExternal, "zaker")
If File.Exists(File.DirInternal,"mp3download.db")=False Then
	File.Copy(File.DirAssets,"mp3download.db",File.DirInternal,"mp3download.db")
	End If
	sql1.Initialize(File.DirInternal,"mp3download.db",False)
cur1=sql1.ExecQuery("SELECT * From tmp3")
	
For i=0 To cur1.RowCount-1
    cur1.Position=i
	Dim pz As Panel
	pz.Initialize("pz")
'	Dim Stopint = 10%y
	ScrollView1.Panel.AddView(pz,0,Stopint,100%x,100%Y)
	Stopint=Stopint+30%y
	pz.LoadLayout("p1")
btncancel.Text=cur1.GetString("namemp3")
btndownload.tag = cur1.GetString("linkmp3") & "#" & cur1.GetString("namemp3")
Label1.Text=cur1.GetString("namemp3")
Next
ScrollView1.Panel.Height = (cur1.RowCount * 30%Y)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
Sub btndownload_Click
	ay = Sender
    Dim pat() As String = Regex.split("#",ay.tag)
If File.Exists(File.DirRootExternal & "/zaker",pat(1)) = False Then
 name1=pat(1) 
    dier=File.DirRootExternal& "/zaker"
    link=pat(0)
rsa.Initialize("rsa")
rsa.FileName = pat(1) 

rsa.Directory =File.DirRootExternal& "/hazf"
rsa.Download(link)
	End If
End Sub
Private Sub rsa_Finished (Result As String)
 File.Copy(File.DirRootExternal & "/hazf",pat(1),dier,name1)
ToastMessageShow("در پوشه zaker ذخیره شد",False)
End Sub


Sub btncancel_Click
	rsa.Cancel(True)
End Sub


اگر لازمه بگید سورسمو بزارم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

این خطو خطا میده 

 File.Copy(File.DirRootExternal & "/hazf",pat(1),dier,name1) 

اگر لازمه بگید سورسمو بزارم

داداش این خط کدو باید تو اکتیویتی کریتت اضافه کنید:

  File.MakeDir(File.DirRootExternal, "hazf")

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
علی علایی    161

کاربر نیمه فعال

این مشکل حل شد 

حالا وقتی دانلود میکنم پسوند فایل یه چیز عجیب غریبه  (فایل من mp3 )

ببنید 

Capture.PNG

بعدشم الان تو جفت فلودرها ذخیره میکنه در حالی که من وسطش کنسل نزدم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

این مشکل حل شد 

حالا وقتی دانلود میکنم پسوند فایل یه چیز عجیب غریبه  (فایل من mp3 )

ببنید 

 

چون فایلتون با همون اسمی که تو ستون name دیتابیستون نوشتین ذخیره میشه ؛وچون اونجا براش پسوند نذاشتین اینطوری؛شما میتونید تو ستون name آخر اسم هر فایل پسوند ".mp4"یا".mp3" رو اضافه کنید

برا مساله دومتونم گفتم که ما اول فایلهای دانلود شده یا نصفه دانلود شده رو تو پوشه"hazf " ذخیره میکنیم بعد از اونجا فقط فایلهای کامل دانلود شده رو کپی میکنیم تو پوشه"zaker" شما برا اینکه حجم فایلتون دو برابر نشه میتونید قبل از کد:

 File.MakeDir(File.DirRootExternal, "hazf")

کد زیرو بنویسید:

File.Delete(File.DirRootExternal , "hazf")

که هربار که وارد برنامه میشید پوشه"hazf"که یه پوشه اضافه هست حذف بشه ودوباره یه پوشه خالی با این اسم ساخته بشه :cheshmak:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

مشکل اول حل شد با اضافه کردن پسوند 

کارهای که گفتی انجام دادم 

ولی مشکل دوم به قوت خودش باقیه 

مشکل دوم مشکل نیست که؛

اینطوری کدها دیگه اول تو پوشه"hazf" ذخیره میشه بعد از اونجا توپوشه "zaker"کپی میشه،که شما میتونی با اون کدی که گفتم(File.Delete(File.DirRootExternal , "hazf"))  رو تو اکتیویتی اول بذاری که کاربر هردفعه که وارد برنامه میشه پوشه "hazf" رو حذف کنه بعد با کد دومی(File.MakeDir(File.DirRootExternal, "hazf")) تو اکتیویتی که دانلود میکنه باز یه پوشه جدید به نام"hazf"بسازه 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
davood1382    302

کاربر نیمه فعال

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

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

سلام

منظورت اینه میخوای فایل هایی که دانلود شده رو مشاهده کنی وپخشش کنی؟اینطوری میشه:

خب شما یه دکمه درست میکنید(مثلا به اسم"لیست دانلودها") که وقتی روش کلید شد میره تو اکتیویتی زیر:

Sub Process_Globals


End Sub

Sub Globals

    Dim vw As VideoView
	Private ListView1 As ListView
	Dim pos As Int
	Dim po As Int
	Dim ring As RingtoneManager
	
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	Activity.LoadLayout("lay1")
	Activity.Color=Colors.Transparent
	vw.Initialize("vw")
	Activity.AddView(vw,0,0,100%x,20%y)
    Dim l As List
	l=File.ListFiles(File.DirRootExternal&"/zaker" )
	For i=0 To l.Size-1
    Dim n As String
	n=l.Get(i)
	ListView1.AddSingleLine(n)
	Next
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub



Sub listview1_ItemClick (Position As Int, Value As Object)

	pos=Position
	vw.LoadVideo(File.DirRootExternal & "/zaker",Value)
    vw.Play
	
End Sub

تو اکتیویتی بالا تو لایوت"lay1" یه لیست ویو"listview1" تعریف کردم ؛همونطور که تو آموزش گفتم فایل ها تو پوشه"zaker" ذخیره شده؛که ما فایل هارو از اونجا فراخوانی کرده ورو هرکدوم کلیک کنیم پخش میشه. 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
davood1382    302

کاربر نیمه فعال

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

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

ببین تو کدهای آموزش ما یه "Panel1" داریم خب تو آیتم کلیکش اینطوری بنویس:

Sub Panel1_Click

	Dim ad As Panel
	ad = Sender
    Dim parts() As String = Regex.split("#",ad.tag)
    StartActivity(add)
	
End Sub

کد های اکتیویتی "add" ههم اینطوری میشه:

Sub Process_Globals



End Sub



Sub Globals
 
    Dim vw As VideoView
    	Private Panel111 As Panel

	Private Label2 As Label
	
End Sub



Sub Activity_Create(FirstTime As Boolean)	
	Activity.LoadLayout("ll")

	
	Label2.Initialize("Label2")


	Dim pq As Phone
	pq.SetScreenOrientation(0)
	vw.Initialize("vw")
	Panel111.AddView(vw,0,0,100%x,Panel111.Width)
	vw.MediaControllerEnabled=True
	If File.Exists(File.DirRootExternal & "/zaker",Main.parts(1)) = False Then
	vw.LoadVideo("http",Main.parts(0))
	vw.Play
	Else
    ToastMessageShow("فایل موجود است",  True)
    vw.LoadVideo(File.DirRootExternal & "/zaker",Main.parts(1))
    vw.Play
    End If	
	
End Sub





Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

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

سورسشو تو تاپیک قرار دادم(سورس دوم)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
majid08    266

کاربر نیمه فعال

سلام

خسته نباشید

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

ممنونم

فرستاده شده از SM-G920Fِ من با Tapatalk

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
alirezakazemizaroomi    437

کاربر نیمه فعال

سلام

خسته نباشید

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

ممنونم

فرستاده شده از SM-G920Fِ من با Tapatalk

سلام

آره

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
KMOHAMMAD    9

کاربر عادی

Capture.JPG

این ساختار دیتابیس من هست
من میخام  با کلیک بر روی دانلود فایل بیاد و لینک های که داخل  ستون لینک 1 هست را فقط دانلود کنه و در پوشه برنامه به نام حیوان ذخیره کنه
می تونید راهنمایی کنید
البته لینک های فرمتشونmp3 هستش و تغییر میکنه ولی فرمت یکسان هست
و میخام وقتی لینک جدید  با فرمتmp3 گذاشتم دانلود کنه و اگر خواستیم دوبار کلیک کنه بگه که قبلا دانلود شه

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

×
×
  • جدید...