PDA

View Full Version : سوال: دریافت اطلاعات فایل در حال دانلود



_behnam_
یک شنبه 24 بهمن 1389, 18:25 عصر
دوستان سلام و خسته نباشید
میخواستم راهنمایی کنید که چطور میتونم اطلاعات فایلی رو که دارم دانلود میکنم بدست بیارم
مثلا
درصد دانلود
حجم فایل دانلود شده
حجم کا فایل

اگه سورسی هست که میتونه کمکم کنه لطفا معرفی کنید


با تشکر/

محسن واژدی
دوشنبه 25 بهمن 1389, 08:47 صبح
سلام
چجوری، یعنی میخواین در حینی که دانلود میشه محتویات فایل رو بخونین؟

REZADG
دوشنبه 25 بهمن 1389, 10:29 صبح
سلام
چجوری، یعنی میخواین در حینی که دانلود میشه محتویات فایل رو بخونین؟
نه ایشون میخوان مانند دانلودر ها میزان دانلود رو به کاربر بر حسب درصد و یا حجم کل فایلو حجم دانلود شده رو نشون بدن

محسن واژدی
دوشنبه 25 بهمن 1389, 13:19 عصر
فکر کنم این سورسه که ضمیمه کردم دقیقا همون چیزیه که شما میخواین، تصویرش سورس هم کنارشه و اینم لینک منبعش:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68809&lngWId=1


در ضمن این چندتا کدا رو هم تست کنین (البته هنوز خودم تستشون نکردم شاید مفید باشه ولی بیشتر همون سورسه رو توصیه میکنم
کد1:

Public Declare Function FtpGetFileSize Lib "wininet.dll" Alias "FtpGetFileSizeA" _
(ByVal hFtpSession As Long, ByVal lpszFileSize As Long) As Long
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean

Private Const MAXDWORD As Double = (2 ^ 32) - 1

private sub getfilesize()
Dim hFile as long,filesize as long
bActiveSession = False
hOpen = 0
hConnection = 0
dwType = FTP_TRANSFER_TYPE_BINARY
Call Connect 'this connects to FTPserver
'...change the current directory to the required one using FtpSetCurrentDirectory

hFile = FtpOpenFile(hConnection, "20021219849324.wav", &H80000000, dwType, 0)
If hFile = 0 Then
ErrorOut Err.LastDllError, "FtpOpenFile"
Exit Sub
End If
Dim nFileSizeLow As Long
Dim nFileSizeHigh As Long
Dim sfilesize As String
nFileSizeLow = FtpGetFileSize(hFile, nFileSizeHigh)
filesize = (nFileSizeHigh * (MAXDWORD + 1) + nFileSizeLow)
msgbox "Filesize in bytes: " & filesize
end sub

کد2:

Private Sub InetWait()
On Error GoTo errHandler
Do While inetFTP.StillExecuting
DoEvents
Loop
Exit Sub
errHandler:
Call Error_Log(Err.Description, Err.Number, Err.Source, "InetWait")
End Sub

Public Function Get_File_Size(ByVal strMyFile As String) As String
On Error GoTo errHandler
Dim result, strData As String
result = ""
inetFTP.Execute , "SIZE " & strMyFile
InetWait
strData = CStr(inetFTP.GetChunk(1024))
Do While Len(strData) > 0
txtOutput.Text = txtOutput.Text & strMyFile & " file size part = " & strData & vbCrLf
result = result & strData
strData = inetFTP.GetChunk(1024)
Loop
Get_File_Size = result
Exit Function
errHandler:
Call Error_Log(Err.Description, Err.Number, Err.Source, "Get_File_Size")
End Function

موفق باشید