Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

FtpGetFileSize non funziona per niente

32 views
Skip to first unread message

OneEDP

unread,
Aug 5, 2009, 10:44:02 AM8/5/09
to
Non riesco

hFile = FtpOpenFile(hConnection, strFileRemoto, GENERIC_READ,
FTP_TRANSFER_TYPE_BINARY, 0)
ret = FtpGetFileSize(hFile, lngSize)

lngSize � sempre -1

Che fare?
Daniele

Carlo Costarella

unread,
Aug 9, 2009, 4:01:19 PM8/9/09
to

"OneEDP" <OneEDP@antispam> ha scritto nel messaggio
news:4a799ac4$0$43596$4faf...@reader1.news.tin.it...
Se la dichiarazione � questa:
Public Declare Function FtpGetFileSize Lib "wininet.dll" _
(ByVal hFile As Long, ByRef lpdwFileSizeHigh As Long) As Long

prova con:
ret = FtpGetFileSize(hFile, ret)
immaginando che ret sia long

Segui questa discussione:
http://www.tek-tips.com/viewthread.cfm?qid=1553082&page=1
e questa:
http://vbnet.mvps.org/index.html?code/internet/ftpdownloadcallback.htm
e soprattutto questo esempio:
http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3777

Ciao, Carlo


OneEDP

unread,
Aug 10, 2009, 5:21:44 AM8/10/09
to
Nulla da fare
Anche con le giuste dichiarazioni non funge
?!
Grazie in ogni caso


@Alex

unread,
Aug 11, 2009, 7:47:20 AM8/11/09
to
On 5 Ago, 16:44, "OneEDP" <OneEDP@antispam> wrote:
> Non riesco
>
> hFile = FtpOpenFile(hConnection, strFileRemoto, GENERIC_READ,
> FTP_TRANSFER_TYPE_BINARY, 0)
> ret = FtpGetFileSize(hFile, lngSize)
>
> lngSize è sempre -1
>
> Che fare?
> Daniele

Cos'è che non funziona...?
Il lngSize rimane a -1 in quanto non viene istanziata la
connessione..., è infatti il tipico risultato di errore....!

Sei certo di arrivare via ftp al server...???
Hai i privilegi di Read sul file...?

Non hai detto nulla... quindi che dire...?

I Link suggerito da Carlo sono funzionanti in quanto li ho usati io
stesso per attivare
connessioni ftp con un Server aziendale, ma ho faticato un pò con i FW
ed i privilegi FTP_GET/PUT e la connessione in Anonimous del Server...
che spesso sono configurati male ed accettano solo quella....!!!!

@Alex

OneEDP

unread,
Aug 11, 2009, 9:30:13 AM8/11/09
to
Alex wrote:
> On 5 Ago, 16:44, "OneEDP" <OneEDP@antispam> wrote:
>> Non riesco
>>
>> hFile = FtpOpenFile(hConnection, strFileRemoto, GENERIC_READ,
>> FTP_TRANSFER_TYPE_BINARY, 0)
>> ret = FtpGetFileSize(hFile, lngSize)
>>
>> lngSize � sempre -1
>>
>> Che fare?
>> Daniele
>
> Cos'� che non funziona...?

> Il lngSize rimane a -1 in quanto non viene istanziata la
> connessione..., � infatti il tipico risultato di errore....!

>
> Sei certo di arrivare via ftp al server...???
> Hai i privilegi di Read sul file...?
>
> Non hai detto nulla... quindi che dire...?
>
> I Link suggerito da Carlo sono funzionanti in quanto li ho usati io
> stesso per attivare
> connessioni ftp con un Server aziendale, ma ho faticato un p� con i FW

> ed i privilegi FTP_GET/PUT e la connessione in Anonimous del Server...
> che spesso sono configurati male ed accettano solo quella....!!!!
>
> @Alex

Ti riepilogo le dichiarazioni

Private Const INTERNET_FLAG_TRANSFER_BINARY = &H2
Private Const INTERNET_DEFAULT_FTP_PORT = 21 ' default
for FTP servers
Private Const FTP_TRANSFER_TYPE_BINARY = &H2
Private Const INTERNET_OPEN_TYPE_DIRECT = 1 ' direct
to net
Private Const INTERNET_DEFAULT_FTP_PORT = 21 ' default
for FTP servers
Private Const INTERNET_FLAG_PASSIVE = &H8000000 ' used for
FTP connections


Private Declare Function FTPGetFile Lib "wininet.dll" _
Alias "FtpGetFileA" _
(ByVal hConnect As Long, _
ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, _
ByVal fFailIfExists As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal dwFlags As Long, _
ByRef dwContext As Long) As Long

Private Declare Function FtpOpenFile Lib "wininet" _
Alias "FtpOpenFileA" _
(ByVal hConnect As Long, _
ByVal lpszFileName As String, _
ByVal dwAccess As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Long
Private Const GENERIC_READ As Long = &H80000000


Private Declare Function FtpGetFileSize Lib "wininet.dll" _
(ByVal hFile As Long, _
ByRef lpdwFileSize As Long) As Long


hOpen = _
InternetOpen("Fantasia FTP", _
INTERNET_OPEN_TYPE_DIRECT, _
vbNullString, _
vbNullString, _
INTERNET_FLAG_PASSIVE)

If hOpen = 0 Then
EseguiFTP = False
GoTo Exit_EseguiFTP
End If

'Apre la connesione con l'FTP Server
hConnection = _
InternetConnect(hOpen, _
"IPSERVER", _
INTERNET_DEFAULT_FTP_PORT, _
"user", _
"password", _
INTERNET_SERVICE_FTP, _
INTERNET_FLAG_PASSIVE, _
0)
If hConnection = 0 Then
meblnErroriComando = True
EseguiFTP = False
GoTo Exit_EseguiFTP
End If

Dim hFile As Long
hFile = FtpOpenFile(hConnection, "RemoteFile", GENERIC_READ,
FTP_TRANSFER_TYPE_BINARY, 0)
'qui ho verificao che hfile � sempre diverso da 0
If hFile = 0 Then
EseguiFTP = False
GoTo Exit_EseguiFTP
End If
Dim sizeH As Long
Dim sizeL As Long
Dim size As long
Dim maxSize as long
maxSize = 2 ^ 31 - 1
sizeH = 0
sizeL = FtpGetFileSize(hFile, sizeH) 'non funge
debug.print sizeL, sizeH, sizeH*maxsize+sizeL 'se le dimensioni sono
> 2^31-1
size = FtpGetFileSize(hFile, size) 'non funge
debug.print size

Invece lngRet = FTPGetFile(hConnection, "RemoteFile", "LocalFile" &
meStrNomeFile, False, 0, FTP_TRANSFER_TYPE_BINARY, 0)
funziona benissimo sia in modo passive, che asincrono

Di pi� non so'
Daniele


OneEDP

unread,
Aug 12, 2009, 3:57:28 AM8/12/09
to
@Alex wrote:
> On 5 Ago, 16:44, "OneEDP" <OneEDP@antispam> wrote:
>> Non riesco
>>
>> hFile = FtpOpenFile(hConnection, strFileRemoto, GENERIC_READ,
>> FTP_TRANSFER_TYPE_BINARY, 0)
>> ret = FtpGetFileSize(hFile, lngSize)
>>
>> lngSize � sempre -1
>>
>> Che fare?
>> Daniele
>
> Cos'� che non funziona...?

> Il lngSize rimane a -1 in quanto non viene istanziata la
> connessione..., � infatti il tipico risultato di errore....!

>
> Sei certo di arrivare via ftp al server...???
> Hai i privilegi di Read sul file...?
>
> Non hai detto nulla... quindi che dire...?
>
> I Link suggerito da Carlo sono funzionanti in quanto li ho usati io
> stesso per attivare
> connessioni ftp con un Server aziendale, ma ho faticato un p� con i FW

> ed i privilegi FTP_GET/PUT e la connessione in Anonimous del Server...
> che spesso sono configurati male ed accettano solo quella....!!!!
>
> @Alex

Penso che il probema sia questo:

200 Representation type is binary IMAGE.
227 Entering Passive Mode (192,168,0,250,19,222).
500 Subcommand SIZE not valid.
150 Retrieving member RemoteFile in file RemoteFile in library LibreriaDati.

Il server non riconosce il subcommand size, ma il file � aperto regorlmente

Credo non ci siano strate
Dovr� abbandonare WinInet ed eseguire via dos
Da dos si possono inviare comandi batch nativi del server.
Grazie


0 new messages