Newsgroup: it.comp.appl.access
Titolo: FTP Fallito con WinInet

Dopo una settimana di FTP effettuati senza problemi stamattina una 
bellissima email mi segnala che ieri sera dopo circa 20 minuti di ftp di un 
file di 1,60 Gb l'FTP � fallito!!
200 Representation type is binary IMAGE.
227 Entering Passive Mode (192,168,0,250,19,226).
500 Subcommand SIZE not valid.
L'FTP utilizza le api di WinInet.dll ed � cos� definita
    hOpen = _
        InternetOpen("FTPServer", _
            INTERNET_OPEN_TYPE_DIRECT, _
            vbNullString, _
            vbNullString, _
            INTERNET_FLAG_PASSIVE)
    'Funzione callback disabilitata  (manda in crash Access! - approfondire 
se se tratta di handle errato)
    'InternetSetStatusCallback hOpen, AddressOf FTPCallBack
    'Apre la connesione con l'FTP Server
    hConnection = _
        InternetConnect(hOpen, _
            "192.168.0.250", _
            INTERNET_DEFAULT_FTP_PORT, _
            "user", _
            "password", _
            INTERNET_SERVICE_FTP, _
            INTERNET_FLAG_PASSIVE, _
            0)
   'Download
   ret = FTPGetFile( _
        hConnection,  _
        "FILEREMOTO", _
        strNomeFile, _
        False, 0, FTP_TRANSFER_TYPE_BINARY, 0)
Le costanti sono:
Private Const FTP_TRANSFER_TYPE_BINARY = &H2
Private Const INTERNET_DEFAULT_FTP_PORT = 21
Private Const INTERNET_SERVICE_FTP = 1
Private Const INTERNET_FLAG_PASSIVE = &H8000000
Private Const INTERNET_FLAG_ASYNC = &H10000000
Dov'� l'errore?!
Quali delle tre API crea il problema?
Grazie per il vostro aiuto
Daniele 

 Dov'� l'errore?!


Ma non stavi usando il mio?
-- 
Ciao
Pablitomf
----------------------------
http://www.accessgroup.it/
----------------------------
Non mi fido molto delle statistiche, perch� un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Immaginavo che ti saresti posto questo interrogativo
Come nella precedente discussione il tuo approccio � un po' diverso:
- effettua l'FTP a chunk definiti da BUFFER_SIZE
- effettua una PUT da un PC
nel mio caso devo effettuare un GET da As400 in modo binario e dovrei usare 
InternetReadFile e scrivere in un file ma ho timore di fare un po' di 
confuzione con i puntatori
Ti incollo il tuo esempio con qualche CUT qu� e l�
    ' Eseguo il Loop per il file size
    For iLoop = 1 To iSize \ BUFFER_SIZE
        'Invio file data
        Get iFile, , FileData
        ' Write chunk to FTP checking for success
        If InternetWriteFile(hFile, FileData(0), BUFFER_SIZE, iWritten) = 0 
Then
            MsgBox "Upload - Fallito!", vbCritical, "ERRORE"
            ShowError
            FTPFile = False
           GoTo Exit_Function
        Else
            ' Check buffer was written
            If iWritten <> BUFFER_SIZE Then
                MsgBox "Upload - Fallito!", vbCritical, "ERRORE"
                ShowError
                FTPFile = False
                GoTo Exit_Function
            End If
        End If
        DoEvents
    Next iLoop
Ci� che non mi � chiaro � come mai esegui un Get all'inizio considerato che 
FileData � ancora vuoto?
E perch� BUFFER_SIZE deve essere sempre uguale a iWritten... non potrebbe 
essere iWritten "pi� piccolo" all'ultimo chunk?
L'altro aspetto importante � quella piccola ma importante costante 
BUFFER_SIZE... come viene stabilita?
Ultima domanda (spero) con il DOS l'FTP ha un throuput pi� perfomrante di 
quasi 4 Mbit/s. Con i chunk potrebbe migliorare rispoetto FTPGetFile?
Perdona sempre l'ignoranza.
Grazie.
Daniele

 Grazie.
i'm here.


 i'm here.
Allora procedo per InternetReadFile.
Ho Gi� visto che FTPGetSize resituisce valori diversi da FileLen di VBA e 
gi� questo mi preoccupa a meno che debba fare solo una verifica analoga al 
BufferSize
Speriamo bene
Ciao

 Ciao
aggiornaci.
