رفتن به مطلب
  • 0

دانلود فایل به تعداد بالا


amir386

سوال

سلام میخواستم چند تا فایل مثلا 100 تا عکس رو دانلود کنم که چند روش رو پیش بردم و هرکدوم مشکلاتی داشتن . یکی از روش هام استفاده از حلقه بود برای دانلود که اصلا یا برنامه کرش میکرد یا خیلیا دانلود نمیشد . یکیشم با یه دیتابیس انجام دادم که مثلا رویداد jobdone. اجرا شد بره برای دانلود بعدی که اونم بازم جواب نداد . دیگه راهی نداشتم از استادای بزرگ انجمن کمک بگیرم . ببخشین خیلی کلی گفتم کلا بهترین راه برای دانلود فایل به تعداد یکم بالا که هم کامل انجام بگیره هم کرش نده برنامه چیه ! با تشکر از همتون :gamer2:

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

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 2 ساعت قبل، amir386 گفته است :

یکیشم با یه دیتابیس انجام دادم که مثلا رویداد jobdone. اجرا شد بره برای دانلود بعدی که اونم بازم جواب نداد

سلام

کدهای این تیکه از حرفتون رو بزارید ببینم چیکار کردید ...

+ یک عکس از دیتابیس تون.

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

Sub Globals
	Dim dw As HttpJob
	Dim te As Int
	Dim dl,kol As String
	Dim ld() As String
	Private EditText1 As EditText
	Private EditText2 As EditText
End Sub

----------------------------------------------------------------------------

' اینجا توی متغیر ld 
'متن از قبل گرفته شده جداش میکنم آرایه های زوجش آیدی لینک هستن و آرایه های فرد خوده لینک ها از قبل متغیر عددی
'te
روبرابر با 1 دادم تا اولین لینک رو دانلود کنه و بقیه روال بیفته داخل رویداد 


Sub Button1_Click
ld = Regex.Split(",",dl)
		 kol=ld(te)
  dw.Download(kol)
		ToastMessageShow("دانلود فایل در مسیرانجام شد",False)
	End If
end sub

----------------------------------------------------------------------------------

'اینم رویداده که اولین دانلود که موفق باشه به متغیر عددی 2 تا اضافه میکنه و میره سراغ لینک بعدی و همینطور تا جایی ک ادامه پیدا کنه

Sub JobDone(job As HttpJob)
	
If job.Success Then
	For i = 1 To (ld.Length + 1)/2
	te = te + 2
	
	 
  dw.Download(kol)
  
Next
End If
Dim io As InputStream
Dim ou As OutputStream
io = job.GetInputStream
ou = File.OpenOutput(File.DirRootExternal,kol&".png",False)
File.Copy2(io,ou)
io.Close
ou.Close
MyGallery1.AddThumbnail(LoadBitmap(File.DirRootExternal,kol&".png"),ld(te-1))
  kol=ld(te)
End Sub
--------------------------------------------------------------------------------------
کلا متاسفانه فقط اولین دانلود موفقه و بعدش با خطا رو به رو میشم
هدفم اینه یه جورایی گالری آنلاین بسازم.

 

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

سلام 

از ariaAsynceTask استفاده کنید

یه لیست دارید(یا کورزور دیتابیس) به اسم myList

من از نسخه 4 کتابخونه استفاده میکنم که یکی دو تا مورد داشته که در نسخه 5 ، برطرف شده(حتما نسخه 5 رو بگیرید)

اگر دیدید اروری چیزی بود ، بگید 

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
Dim myList As List
Dim aria As AriaAsyncTask
Dim dl As AriaAsyncTaskDownloader
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	'Activity.LoadLayout("Layout1")
myList.Add("link1")
myList.Add("link2")
myList.Add("link3")
'.
'.
'.
myList.Add("link100")
aria.Initialize("aria")
dl.Initialize(aria)
If dl.IsConnected Then
	aria.Run(Array(myList))
End If
End Sub

Sub aria_DoInBackground(Params() As Object) As Object
	Try
		Dim l As List = Params(0)
		For i = 0 To l.Size - 1 
			dl.Download(l.Get(i),File.Combine(File.DirInternal,"picNumber"&i&".png"))
			aria.PublishProgress(i)
		Next
		Return "true"
	Catch
		Log(LastException)
		Return "error"
	End Try
End Sub
Sub	 aria_OnPostExecute(Result As Object)
	If Result = "true" Then
		Msgbox("ba movafaghiat down shod","stat")
	Else
		Msgbox("khata: " & Result,"stat")
	End If
End Sub
Sub  aria_OnProgressUpdate(Progress As Int)
	Log("akse shomareye "&Progress + 1&" download shod")
End Sub

 

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

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...