2016-04-15 5 views
0

Als VFP-Datenbank-Entwickler, erfordert einige CAB/ZIP-Datei (täglich) erstellt und auf unserer FTP-Site hochgeladen werden. Wir verwenden Windows Server 2008 R2 für diese automatische exe.beim Hochladen der Datei auf FTP-Site von vfp EXE mit Windows Server 2008R2 erstellt es nur 0 KB-Datei

Früher funktionierte es gut, aber aus irgendeinem Grund hatten wir Server 2008 mit allen Server-Updates neu installiert, jetzt erstellt meine Auto-Exe CAB-Datei und lädt auch Datei auf FTP-Server, aber die Größe auf dem Server ist 0 kb

Wir sind mit folgendem Code CAB-Datei zum hochladen auf fTP-Server

FUNCTION FTPPut 

    PARAMETERS lcHost, lcUser, lcPassword, lcSource, lcTarget, lnXFerType 

    *................................................................................. 
    *................................................................................. 

    DECLARE INTEGER InternetOpen IN wininet.DLL; 
     STRING sAgent,; 
     INTEGER lAccessType,; 
     STRING sProxyName,; 
     STRING sProxyBypass,; 
     STRING lFlags 

    DECLARE INTEGER InternetCloseHandle IN wininet.DLL INTEGER hInet 

    DECLARE INTEGER InternetConnect IN wininet.DLL; 
     INTEGER hInternetSession,; 
     STRING lcHost,; 
     INTEGER nServerPort,; 
     STRING lcUser,; 
     STRING lcPassword,; 
     INTEGER lService,; 
     INTEGER lFlags,; 
     INTEGER lContext 

    DECLARE INTEGER FtpPutFile IN wininet.DLL; 
     INTEGER hConnect,; 
     STRING lpszLocalFile,; 
     STRING lpszNewRemoteFile,; 
     INTEGER dwFlags,; 
     INTEGER dwContext 

    PUBLIC hOpen, hftpSession 

    lcHost  = ALLTRIM(lcHost) 
    lcUser  = ALLTRIM(lcUser) 
    lcPassword = ALLTRIM(lcPassword) 
    lcSource = ALLTRIM(lcSource) 
    lcTarget = ALLTRIM(lcTarget) 

    IF connect2ftp (lcHost, lcUser, lcPassword) 
     WAIT WINDOW 'Transferring....' NOWAIT 
     IF FtpPutFile(hftpSession, lcSource,; 
       lcTarget, lnXFerType, 0) = 1 
      WAIT WINDOW lcSource + ' transferred.' TIMEOUT 2 
     ENDIF 

     = InternetCloseHandle (hftpSession) 
     = InternetCloseHandle (hOpen) 
    ENDIF 

Vielen Dank im Voraus

Antwort

2

ich bin nicht in der Lage, Ihre Frage zu beantworten, ohne zu wissen, was das Programm „connect2ftp“ tut, obwohl ich nehme an, es verbindet und ope ns die FTP-Verbindung.

Sie möchten sicherstellen, dass Sie lnXferType = 2 einschließen, damit Sie eine Binärübertragung erhalten.

Da ich den Code nicht haben für die Verbindung Sie verwenden, ich werde die Lösung bieten wir immer für diese, Robert Abraham FTP-Klasse 2.07 zum Herunterladen von http://leafe.com/download/ftpc_2.0.7_20090418.zip

Es ist sehr klein und leicht VFP-Lösung zu verwenden, und ein Upload einen wie diese Datei lautet:

LOCAL loFTP 
SET PROCEDURE TO ftp.prg ADDITIVE 
loFTP=CREATEOBJECT('ftp_service') 

IF loFTP.OpenInternet("ABONNE", "PWD", "10.10.10.10", "21") 
    IF loFTP.PutFTPFile("any.txt","local.txt", FTP_TRANSFER_TYPE_BINARY) 
     ?STRTRAN("File %File% uploaded","%File%","local.txt") 
    ELSE 
     ?loFTP.GetExtendedErrorCode(),loFTP.GetExtendedErrorMsg() 
    ENDIF 
    =loFTP.CloseInternet() 
ENDIF 
RELEASE PROCEDURE ftp.prg 
+0

Vielen Dank für Ihre Hilfe, aber immer noch das funktioniert nicht auf Windows Server 2008 R2, auf meinem Laptop (Windows 10) es funktioniert gut. So etwas stimmt nicht mit Windows-Updates. vor bestimmten Updates funktionierte es jetzt einwandfrei und funktionierte überhaupt nicht –

0

Es ist sehr wahrscheinlich, dass Sie aktive Verbindung verwenden (Interconnect lFlags Parameter 0 - und wahrscheinlich auch Firewall in diesem Fall blockiert). Versuchen Sie lFlags auf INTERNET_FLAG_PASSIVE mit:

INTERNET_FLAG_PASSIVE definieren 0x8000000

Verwandte Themen