  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 1 樓
  | 
		
			
				 發表於: 星期日 五月 04, 2003 3:08 pm    文章主題: FTP上/下傳範例(轉貼) | 
				     | 
			 
			
				
  | 
			 
			
				FTP上傳範例(轉貼)
 
 
 
 	  | 代碼: | 	 		  
 
 RELEASE SZ_FTP
 
 PUBLIC SZ_FTP
 
 SZ_FTP = CREATEOBJECT('ftp_service')
 
 RETURN 
 
 
PROCEDURE ListDir
 
 LOCAL LCOUTPUT , LCDIRNAME , LADIRARRAY
 
 LADIRARRAY = ''
 
 IF  .NOT. SZ_FTP.GETFTPDIRECTORY(@LCDIRNAME)
 
     SZ_FTP.GETERRORCODE(.T.)
 
    LCDIRNAME = ''
 
 ENDIF 
 
 IF  .NOT. SZ_FTP.GETFTPDIRECTORYARRAY(@LADIRARRAY,'*.*')
 
    IF  .NOT. EMPTY(LADIRARRAY) .OR. SZ_FTP.GETERRORCODE(.F.) <> 18
 
        SZ_FTP.GETERRORCODE(.T.)
 
    ENDIF 
 
 ENDIF 
 
 ? 
 
 ? 'FTP 醴翹: ' + LCDIRNAME
 
 IF  .NOT. EMPTY(LADIRARRAY)
 
    FOR X = 1 TO ALEN(LADIRARRAY,1)
 
       LCOUTPUT =  ;
 
            '   ' + PADR(LADIRARRAY(X,1),25) + PADL(STR(LADIRARRAY(X,3)),12) + ' ' +  ;
 
      PADR(DTOC(LADIRARRAY(X,6)),14) + LADIRARRAY(X,7)
 
       ? LCOUTPUT
 
    ENDFOR 
 
 ENDIF 
 
 ? 
 
 RETURN 
 
ENDPROC
 
*------
 
DEFINE CLASS ftp_Service AS custom
 
 CIPADDRESS = ''
 
 CUSERNAME = ''
 
 CPASSWORD = ''
 
 CPORT = '21'
 
 NINET_HANDLE = 0
 
 NCONNECT_HANDLE = 0
 
 LDLL_LOADED = .F.
 
 NRESULT_CODE = 0
 
 NEXTENDED_RESULT = 0
 
 CEXTENDED_MESSAGE = ''
 
 CCURRENTDIR = ''
 
 CAGENT = 'Visual FoxPro' + CHR(0)
 
 
PROCEDURE init
 
 IF _DOS .OR. _UNIX .OR. _MAC
 
    RETURN .F.
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE LoadAPIFuncs
 
 LOCAL LPCAGENT , NACCESSTYPE , LPCPROXYNAME , LPCPROXYBYPASS , NFLAGS
 
 LOCAL NINET_HANDLE , NCONNECT_HANDLE , LPCSERVER , NPORT , LPCUSERNAME
 
 LOCAL LPCPASSWORD , NSERVICE , NCONTEXT , NMAX_PATH
 
 LOCAL LPCDIRECTORY , LPCFILENAME , LPCSEARCHSTR , LPCWIN32_FIND_DATA
 
 LOCAL LPCREMOTEFILE , LPCNEWFILE , NFAILIFEXISTS , NATTRIBUTES
 
 LOCAL NERROR , LPCBUFFER
 
 IF THIS.LDLL_LOADED
 
    RETURN 0
 
 ENDIF 
 
 DECLARE INTEGER GetLastError IN Kernel32
 
 DECLARE INTEGER FileTimeToSystemTime IN Kernel32 STRING @ , STRING @
 
 DECLARE INTEGER InternetOpen IN WinInet STRING @ , INTEGER , STRING @ , STRING @ ,  ;
 
      INTEGER 
 
 DECLARE INTEGER InternetConnect IN WinInet INTEGER , STRING @ , SHORT , STRING @ ,  ;
 
      STRING @ , INTEGER , INTEGER , INTEGER 
 
 DECLARE INTEGER InternetCloseHandle IN WinInet INTEGER 
 
 DECLARE INTEGER FtpCreateDirectory IN WinInet INTEGER , STRING @
 
 DECLARE INTEGER FtpDeleteFile IN WinInet INTEGER , STRING @
 
 DECLARE INTEGER FtpFindFirstFile IN WinInet INTEGER , STRING @ , STRING @ , INTEGER ,  ;
 
      INTEGER 
 
 DECLARE INTEGER InternetFindNextFile IN WinInet INTEGER , STRING @
 
 DECLARE INTEGER FtpGetCurrentDirectory IN WinInet INTEGER , STRING @ , INTEGER @
 
 DECLARE INTEGER FtpGetFile IN WinInet INTEGER , STRING @ , STRING @ , INTEGER , INTEGER ,  ;
 
      INTEGER , INTEGER 
 
 DECLARE INTEGER FtpOpenFile IN WinInet INTEGER , STRING @ , INTEGER , INTEGER , INTEGER 
 
 DECLARE INTEGER FtpPutFile IN WinInet INTEGER , STRING @ , STRING @ , INTEGER , INTEGER 
 
 DECLARE INTEGER FtpRemoveDirectory IN WinInet INTEGER , STRING @
 
 DECLARE INTEGER FtpRenameFile IN WinInet INTEGER , STRING @ , STRING @
 
 DECLARE INTEGER FtpSetCurrentDirectory IN WinInet INTEGER , STRING @
 
 DECLARE INTEGER InternetGetLastResponseInfo IN WinInet INTEGER @ , STRING @ , INTEGER @
 
 THIS.LDLL_LOADED = .T.
 
 RETURN 0
 
ENDPROC
 
*------ 
 
 
PROCEDURE OpenInternet
 
 LPARAMETER LCUSERNAME , LCPASSWORD , LCIPADDRESS , LCPORT
 
 LOCAL LNPCOUNT , FRESULT , LCTEMPDIR , LNCONNECTHANDLE
 
 LNPCOUNT = PARAMETERS()
 
 IF LNPCOUNT <> 4
 
    NRESULT_CODE = 12010
 
    RETURN .F.
 
 ENDIF 
 
 IF (TYPE('lcUserName') <> 'C') .OR. (TYPE('lcPassword') <> 'C') .OR.  ;
 
(TYPE('lcIPAddress') <> 'C') .OR. (TYPE('lcPort') <> 'C')
 
    NRESULT_CODE = 87
 
    RETURN .F.
 
 ENDIF 
 
 IF EMPTY(LCUSERNAME) .OR. EMPTY(LCPASSWORD) .OR. EMPTY(LCIPADDRESS)
 
    NRESULT_CODE = 12010
 
    RETURN .F.
 
 ENDIF 
 
 IF THIS.LOADAPIFUNCS() <> 0
 
    RETURN .F.
 
 ENDIF 
 
 THIS.CUSERNAME = LCUSERNAME + CHR(0)
 
 THIS.CPASSWORD = LCPASSWORD + CHR(0)
 
 THIS.CIPADDRESS = LCIPADDRESS + CHR(0)
 
 THIS.CPORT = LCPORT
 
 THIS.NINET_HANDLE = INTERNETOPEN((THIS.CAGENT),1,CHR(0),CHR(0),0)
 
  THIS.GETEXTENDEDERROR()
 
 IF THIS.NINET_HANDLE = 0
 
     THIS.CLOSEFTP()
 
    RETURN .F.
 
 ENDIF 
 
 LNCONNECT_HANDLE =  ;
 
      INTERNETCONNECT(THIS.NINET_HANDLE,(THIS.CIPADDRESS),VAL(LCPORT),(THIS.CUSERNAME),(THIS.CPASSWORD),1,0,0)
 
  THIS.GETEXTENDEDERROR()
 
 IF LNCONNECT_HANDLE <> 0
 
    LCTEMPDIR = SPACE(260)
 
    FRESULT = FTPGETCURRENTDIRECTORY(LNCONNECT_HANDLE,@LCTEMPDIR,260)
 
     THIS.GETEXTENDEDERROR()
 
    IF FRESULT <> 0
 
       THIS.CCURRENTDIR = LCTEMPDIR
 
        INTERNETCLOSEHANDLE(LNCONNECT_HANDLE)
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ELSE 
 
    RETURN .F.
 
 ENDIF 
 
 RETURN .T.
 
ENDPROC
 
*------ 
 
 
PROCEDURE OpenFtpConnection
 
 LOCAL NHANDLE , LNCONNECT_HANDLE , LCCURRENTDIR
 
 LNCONNECT_HANDLE =  ;
 
      INTERNETCONNECT(THIS.NINET_HANDLE,(THIS.CIPADDRESS),VAL(THIS.CPORT),(THIS.CUSERNAME),(THIS.CPASSWORD),1,0,0)
 
  THIS.GETEXTENDEDERROR()
 
 LCCURRENTDIR = THIS.CCURRENTDIR
 
 IF LNCONNECT_HANDLE <> 0
 
    FRESULT = FTPSETCURRENTDIRECTORY(LNCONNECT_HANDLE,@LCCURRENTDIR)
 
    IF FRESULT = 1
 
       THIS.NCONNECT_HANDLE = LNCONNECT_HANDLE
 
       RETURN .T.
 
    ELSE 
 
        THIS.GETEXTENDEDERROR()
 
       RETURN .F.
 
    ENDIF 
 
 ELSE 
 
    RETURN .F.
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE CloseFtpConnection
 
 IF THIS.NCONNECT_HANDLE <> 0
 
     INTERNETCLOSEHANDLE(THIS.NCONNECT_HANDLE)
 
 ENDIF 
 
 THIS.NCONNECT_HANDLE = 0
 
 RETURN 
 
ENDPROC
 
*------ 
 
 
PROCEDURE CloseInternet
 
 IF THIS.NINET_HANDLE <> 0
 
     INTERNETCLOSEHANDLE(THIS.NINET_HANDLE)
 
    THIS.NINET_HANDLE = 0
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetFtpFile
 
 LPARAMETER LCREMOTEFILE , LCNEWFILE , LLFAILIFEXISTS
 
 LOCAL FRESULT , LNFAIL
 
 IF THIS.OPENFTPCONNECTION()
 
    IF LLFAILIFEXISTS
 
       LNFAIL = 1
 
    ELSE 
 
       LNFAIL = 0
 
    ENDIF 
 
    LCNEWFILE = LCNEWFILE + CHR(0)
 
    LCREMOTEFILE = LCREMOTEFILE + CHR(0)
 
    FRESULT =  ;
 
         FTPGETFILE(THIS.NCONNECT_HANDLE,@LCREMOTEFILE,@LCNEWFILE,LNFAIL,128,2,0)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE PutFtpFile
 
 LPARAMETER LCREMOTEFILE , LCLOCALFILE
 
 LOCAL FRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LCREMOTEFILE = LCREMOTEFILE + CHR(0)
 
    LCLOCALFILE = LCLOCALFILE + CHR(0)
 
    FRESULT = FTPPUTFILE(THIS.NCONNECT_HANDLE,@LCLOCALFILE,@LCREMOTEFILE,2,0)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE DeleteFtpFile
 
 LPARAMETER LCREMOTEFILE
 
 LOCAL FRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LCREMOTEFILE = LCREMOTEFILE + CHR(0)
 
    FRESULT = FTPDELETEFILE(THIS.NCONNECT_HANDLE,@LCREMOTEFILE)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE RenameFtpFile
 
 LPARAMETER LCOLDFILE , LCNEWFILE
 
 LOCAL FRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LCOLDFILE = LCOLDFILE + CHR(0)
 
    LCNEWFILE = LCNEWFILE + CHR(0)
 
    FRESULT = FTPRENAMEFILE(THIS.NCONNECT_HANDLE,@LCOLDFILE,@LCNEWFILE)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE CreateFtpDirectory
 
 LPARAMETER LCNEWDIR
 
 LOCAL FRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LCNEWDIR = LCNEWDIR + CHR(0)
 
    FRESULT = FTPCREATEDIRECTORY(THIS.NCONNECT_HANDLE,@LCNEWDIR)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE RemoveFtpDirectory
 
 LPARAMETER LCNEWDIR
 
 LOCAL FRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LCNEWDIR = LCNEWDIR + CHR(0)
 
    FRESULT = FTPREMOVEDIRECTORY(THIS.NCONNECT_HANDLE,@LCNEWDIR)
 
     THIS.GETEXTENDEDERROR()
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE ChangeFtpDirectory
 
 LPARAMETER LCNEWDIR
 
 LOCAL FRESULT , LCTEMPDIR , LLRESULT
 
 IF THIS.OPENFTPCONNECTION()
 
    LLRESULT = .F.
 
    LCNEWDIR = LCNEWDIR + CHR(0)
 
    LCTEMPDIR = SPACE(260)
 
    FRESULT = FTPSETCURRENTDIRECTORY(THIS.NCONNECT_HANDLE,@LCNEWDIR)
 
     THIS.GETEXTENDEDERROR()
 
    IF FRESULT = 1
 
       FRESULT = FTPGETCURRENTDIRECTORY(THIS.NCONNECT_HANDLE,@LCTEMPDIR,260)
 
        THIS.GETEXTENDEDERROR()
 
       IF FRESULT = 1
 
          THIS.CCURRENTDIR = LCTEMPDIR
 
          LLRESULT = .T.
 
       ENDIF 
 
    ENDIF 
 
     THIS.CLOSEFTPCONNECTION()
 
    RETURN LLRESULT
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetFtpDirectory
 
 LPARAMETER LCDIRECTORY
 
 LOCAL FRESULT , LCTEMPDIR
 
 IF THIS.OPENFTPCONNECTION()
 
    LCTEMPDIR = SPACE(260)
 
    FRESULT = FTPGETCURRENTDIRECTORY(THIS.NCONNECT_HANDLE,@LCTEMPDIR,260)
 
     THIS.GETEXTENDEDERROR()
 
    LCDIRECTORY = LEFT(LCTEMPDIR,AT(CHR(0),LCTEMPDIR) - 1)
 
     THIS.CLOSEFTPCONNECTION()
 
    IF FRESULT = 1
 
       RETURN .T.
 
    ELSE 
 
       RETURN .F.
 
    ENDIF 
 
 ENDIF 
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetFtpDirectoryArray
 
 LPARAMETER LADIRECTORY , LCMASK
 
 LOCAL CSTRUCT , LLRESULT , LNCOUNT , FRESULT , LFFHANDLE
 
 IF THIS.OPENFTPCONNECTION()
 
    LCMASK = LCMASK + CHR(0)
 
    DIMENSION LADIRECTORY( 1 , 7 )
 
    LADIRECTORY( 1 , 1 ) = .F.
 
    LCSTRUCT = SPACE(319)
 
    LFFHANDLE = FTPFINDFIRSTFILE(THIS.NCONNECT_HANDLE,@LCMASK,@LCSTRUCT,0,0)
 
     THIS.GETEXTENDEDERROR()
 
    IF LFFHANDLE = 0 .OR. THIS.NRESULT_CODE = 18
 
        THIS.CLOSEFTPCONNECTION()
 
       RETURN .F.
 
    ENDIF 
 
     THIS.CRACKFILE(LCSTRUCT,@LADIRECTORY)
 
    LLRESULT = 1
 
    DO WHILE THIS.NRESULT_CODE <> 18 AND LLRESULT <> 0
 
       LCSTRUCT = SPACE(319)
 
       LLRESULT = INTERNETFINDNEXTFILE(LFFHANDLE,@LCSTRUCT)
 
        THIS.GETEXTENDEDERROR()
 
       IF THIS.NRESULT_CODE <> 18 AND LLRESULT <> 0
 
           THIS.CRACKFILE(LCSTRUCT,@LADIRECTORY)
 
       ENDIF 
 
    ENDDO 
 
     THIS.CLOSEFTPCONNECTION()
 
 ELSE 
 
    RETURN .F.
 
 ENDIF 
 
 RETURN .T.
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetErrorCode
 
 LPARAMETER LLSHOWMESSAGE
 
 LOCAL LCMESSAGE
 
 IF LLSHOWMESSAGE = .T.
 
    LCMESSAGE =  ;
 
         '渣昫 (' + ALLTRIM(STR(THIS.NRESULT_CODE)) + ')  -  ' +  ;
 
   THIS.GETERRORTEXT(THIS.NRESULT_CODE)
 
    IF  .NOT. EMPTY(THIS.CEXTENDED_MESSAGE)
 
       LCMESSAGE =  ;
 
            LCMESSAGE + CHR(13) + CHR(13) + '孺桯渣昫陓洘 - (' +  ;
 
      ALLTRIM(STR(THIS.NEXTENDED_RESULT)) + ') - ' + THIS.CEXTENDED_MESSAGE
 
    ENDIF 
 
     MESSAGEBOX(LCMESSAGE,48,'FTP 渣昫陓洘')
 
 ENDIF 
 
 RETURN THIS.NRESULT_CODE
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetExtendedErrorCode
 
 RETURN THIS.NEXTENDED_RESULT
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetExtendedErrorMsg
 
 RETURN THIS.CEXTENDED_MESSAGE
 
ENDPROC
 
*------ 
 
 
PROCEDURE CrackFile
 
 LPARAMETER LCSTRING , LADIRECTORY
 
 LOCAL LCFILENAME , LCALTERNAME , LNSIZEHIGH , LNSIZELOW , LNFILESIZE , LCATTRIBUTES ,  ;
 
      LNARRAYLEN , LCTIMEBUFF , LDCREATEDATE , LDACCESSDATE , LDWRITEDATE ,  ;
 
      LANEWARRAY , LNRESULT
 
 IF TYPE('laDirectory[1, 1]') = 'L'
 
    DIMENSION LADIRECTORY( 1 , 7 )
 
 ELSE 
 
    DIMENSION LADIRECTORY( ALEN(LADIRECTORY,1) + 1 , 7 )
 
 ENDIF 
 
 LNARRAYLEN = ALEN(LADIRECTORY,1)
 
 LCFILENAME = SUBSTR(LCSTRING,45,260)
 
 LCALTERNAME = RIGHT(LCSTRING,14)
 
 LCFILENAME = LEFT(LCFILENAME,AT(CHR(0),LCFILENAME) - 1)
 
 LCALTERNAME = LEFT(LCALTERNAME,AT(CHR(0),LCALTERNAME) - 1)
 
 LNSIZEHIGH =  ;
 
      (ASC(SUBSTR(LCSTRING,29,1)) * 1) + (ASC(SUBSTR(LCSTRING,30,1)) * 256) +  ;
 
(ASC(SUBSTR(LCSTRING,31,1)) * 65536) + (ASC(SUBSTR(LCSTRING,32,1)) * 16777216)
 
 LNSIZELOW =  ;
 
      (ASC(SUBSTR(LCSTRING,33,1)) * 1) + (ASC(SUBSTR(LCSTRING,34,1)) * 256) +  ;
 
(ASC(SUBSTR(LCSTRING,35,1)) * 65536) + (ASC(SUBSTR(LCSTRING,36,1)) * 16777216)
 
 LNFILESIZE = (LNSIZEHIGH * 4294967295) + LNSIZELOW
 
 LCTIMEBUFF = SUBSTR(LCSTRING,5,8)
 
 LDCREATEDATE = THIS.CRACKDATE(LCTIMEBUFF)
 
 LCTIMEBUFF = SUBSTR(LCSTRING,13,8)
 
 LDACCESSDATE = THIS.CRACKDATE(LCTIMEBUFF)
 
 LCTIMEBUFF = SUBSTR(LCSTRING,21,8)
 
 LDWRITEDATE = THIS.CRACKDATE(LCTIMEBUFF)
 
 LCATTRIBUTES = THIS.CRACKATTRIBUTES(LEFT(LCSTRING,4))
 
 LADIRECTORY( LNARRAYLEN , 1 ) = ALLTRIM(LCFILENAME)
 
 LADIRECTORY( LNARRAYLEN , 2 ) = ALLTRIM(LCALTERNAME)
 
 LADIRECTORY( LNARRAYLEN , 3 ) = LNFILESIZE
 
 LADIRECTORY( LNARRAYLEN , 4 ) = LDCREATEDATE
 
 LADIRECTORY( LNARRAYLEN , 5 ) = LDACCESSDATE
 
 LADIRECTORY( LNARRAYLEN , 6 ) = LDWRITEDATE
 
 LADIRECTORY( LNARRAYLEN , 7 ) = LCATTRIBUTES
 
 RETURN 
 
ENDPROC
 
*------ 
 
 
PROCEDURE CrackDate
 
 LPARAMETER LCOUTBUFFER
 
 LOCAL LCINBUFFER , LDDATETIME , FRESULT , LCBUILD , LNDAY , LNMONTH , LNYEAR , LNHOUR ,  ;
 
      LNMINUTE , LNSECOND
 
 LCINBUFFER = SPACE(16)
 
 FRESULT = FILETIMETOSYSTEMTIME(@LCOUTBUFFER,@LCINBUFFER)
 
  THIS.GETEXTENDEDERROR()
 
 IF FRESULT = 0
 
    LDDATETIME = DATETIME(1901,1,1,0,0,0)
 
    RETURN LDDATETIME
 
 ENDIF 
 
 LNYEAR = ASC(SUBSTR(LCINBUFFER,1,1)) + (ASC(SUBSTR(LCINBUFFER,2,1)) * 256)
 
 LNMONTH = ASC(SUBSTR(LCINBUFFER,3,1)) + (ASC(SUBSTR(LCINBUFFER,4,1)) * 256)
 
 LNDAY = ASC(SUBSTR(LCINBUFFER,7,1)) + (ASC(SUBSTR(LCINBUFFER,8,1)) * 256)
 
 LNHOUR = ASC(SUBSTR(LCINBUFFER,9,1)) + (ASC(SUBSTR(LCINBUFFER,10,1)) * 256)
 
 LNMINUTE = ASC(SUBSTR(LCINBUFFER,11,1)) + (ASC(SUBSTR(LCINBUFFER,12,1)) * 256)
 
 LNSECOND = ASC(SUBSTR(LCINBUFFER,13,1)) + (ASC(SUBSTR(LCINBUFFER,13,1)) * 256)
 
 LDDATETIME = DATETIME(LNYEAR,LNMONTH,LNDAY,LNHOUR,LNMINUTE,LNSECOND)
 
 RETURN LDDATETIME
 
ENDPROC
 
*------ 
 
 
PROCEDURE CrackAttributes
 
 LPARAMETER LCBUFFER
 
 LOCAL LCATTRIBUTES , LNVALUE
 
 LCATTRIBUTES = ''
 
 LNVALUE =  ;
 
      (ASC(SUBSTR(LCBUFFER,1,1)) * 1) + (ASC(SUBSTR(LCBUFFER,2,1)) * 256) +  ;
 
(ASC(SUBSTR(LCBUFFER,3,1)) * 65536) + (ASC(SUBSTR(LCBUFFER,4,1)) * 16777216)
 
 DO CASE 
 
 CASE BITTEST(LNVALUE,0)
 
    LCATTRIBUTES = LCATTRIBUTES + 'R'
 
 CASE BITTEST(LNVALUE,1)
 
    LCATTRIBUTES = LCATTRIBUTES + 'H'
 
 CASE BITTEST(LNVALUE,2)
 
    LCATTRIBUTES = LCATTRIBUTES + 'S'
 
 CASE BITTEST(LNVALUE,4)
 
    LCATTRIBUTES = LCATTRIBUTES + 'D'
 
 CASE BITTEST(LNVALUE,32)
 
    LCATTRIBUTES = LCATTRIBUTES + 'A'
 
 CASE BITTEST(LNVALUE,128)
 
    LCATTRIBUTES = LCATTRIBUTES + 'N'
 
 CASE BITTEST(LNVALUE,256)
 
    LCATTRIBUTES = LCATTRIBUTES + 'T'
 
 CASE BITTEST(LNVALUE,11)
 
    LCATTRIBUTES = LCATTRIBUTES + 'C'
 
 CASE BITTEST(LNVALUE,12)
 
    LCATTRIBUTES = LCATTRIBUTES + 'O'
 
 ENDCASE 
 
 RETURN LCATTRIBUTES
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetExtendedError
 
 LOCAL LCMESSAGE , LNERROR , LCBUFFER
 
 THIS.NRESULT_CODE = GETLASTERROR()
 
 LNERROR = 0
 
 LCBUFFER = SPACE(260)
 
  INTERNETGETLASTRESPONSEINFO(LNERROR,@LCBUFFER,260)
 
 THIS.NEXTENDED_RESULT = LNERROR
 
 THIS.CEXTENDED_MESSAGE = LEFT(LCBUFFER,AT(CHR(0),LCBUFFER) - 1)
 
 RETURN 
 
ENDPROC
 
*------ 
 
 
PROCEDURE GetErrorText
 
 LPARAMETER LNERROR
 
 LOCAL LCMESSAGE
 
 DO CASE 
 
 CASE LNERROR = 12001
 
    LCMESSAGE = 'ERROR_INTERNET_OUT_OF_HANDLES'
 
 CASE LNERROR = 12002
 
    LCMESSAGE = 'ERROR_INTERNET_TIMEOUT'
 
 CASE LNERROR = 12003
 
    LCMESSAGE = 'ERROR_INTERNET_EXTENDED_ERROR'
 
 CASE LNERROR = 12004
 
    LCMESSAGE = 'ERROR_INTERNET_INTERNAL_ERROR'
 
 CASE LNERROR = 12005
 
    LCMESSAGE = 'ERROR_INTERNET_INVALID_URL'
 
 CASE LNERROR = 12006
 
    LCMESSAGE = 'ERROR_INTERNET_UNRECOGNIZED_SCHEME'
 
 CASE LNERROR = 12007
 
    LCMESSAGE = 'ERROR_INTERNET_NAME_NOT_RESOLVED'
 
 CASE LNERROR = 12008
 
    LCMESSAGE = 'ERROR_INTERNET_PROTOCOL_NOT_FOUND'
 
 CASE LNERROR = 12009
 
    LCMESSAGE = 'ERROR_INTERNET_INVALID_OPTION'
 
 CASE LNERROR = 12010
 
    LCMESSAGE = 'ERROR_INTERNET_BAD_OPTION_LENGTH'
 
 CASE LNERROR = 12011
 
    LCMESSAGE = 'ERROR_INTERNET_OPTION_NOT_SETTABLE'
 
 CASE LNERROR = 12012
 
    LCMESSAGE = 'ERROR_INTERNET_SHUTDOWN'
 
 CASE LNERROR = 12013
 
    LCMESSAGE = 'ERROR_INTERNET_INCORRECT_USER_NAME'
 
 CASE LNERROR = 12014
 
    LCMESSAGE = 'ERROR_INTERNET_INCORRECT_PASSWORD'
 
 CASE LNERROR = 12015
 
    LCMESSAGE = 'ERROR_INTERNET_LOGIN_FAILURE'
 
 CASE LNERROR = 12016
 
    LCMESSAGE = 'ERROR_INTERNET_INVALID_OPERATION'
 
 CASE LNERROR = 12017
 
    LCMESSAGE = 'ERROR_INTERNET_OPERATION_CANCELLED'
 
 CASE LNERROR = 12018
 
    LCMESSAGE = 'ERROR_INTERNET_INCORRECT_HANDLE_TYPE'
 
 CASE LNERROR = 12019
 
    LCMESSAGE = 'ERROR_INTERNET_INCORRECT_HANDLE_STATE'
 
 CASE LNERROR = 12020
 
    LCMESSAGE = 'ERROR_INTERNET_NOT_PROXY_REQUEST'
 
 CASE LNERROR = 12021
 
    LCMESSAGE = 'ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND'
 
 CASE LNERROR = 12022
 
    LCMESSAGE = 'ERROR_INTERNET_BAD_REGISTRY_PARAMETER'
 
 CASE LNERROR = 12023
 
    LCMESSAGE = 'ERROR_INTERNET_NO_DIRECT_ACCESS'
 
 CASE LNERROR = 12024
 
    LCMESSAGE = 'ERROR_INTERNET_NO_CONTEXT'
 
 CASE LNERROR = 12025
 
    LCMESSAGE = 'ERROR_INTERNET_NO_CALLBACK'
 
 CASE LNERROR = 12026
 
    LCMESSAGE = 'ERROR_INTERNET_REQUEST_PENDING'
 
 CASE LNERROR = 12027
 
    LCMESSAGE = 'ERROR_INTERNET_INCORRECT_FORMAT'
 
 CASE LNERROR = 12028
 
    LCMESSAGE = 'ERROR_INTERNET_ITEM_NOT_FOUND'
 
 CASE LNERROR = 12029
 
    LCMESSAGE = 'ERROR_INTERNET_CANNOT_CONNECT'
 
 CASE LNERROR = 12030
 
    LCMESSAGE = 'ERROR_INTERNET_CONNECTION_ABORTED'
 
 CASE LNERROR = 12031
 
    LCMESSAGE = 'ERROR_INTERNET_CONNECTION_RESET'
 
 CASE LNERROR = 12032
 
    LCMESSAGE = 'ERROR_INTERNET_FORCE_RETRY'
 
 CASE LNERROR = 12033
 
    LCMESSAGE = 'ERROR_INTERNET_INVALID_PROXY_REQUEST'
 
 CASE LNERROR = 12034
 
    LCMESSAGE = 'ERROR_INTERNET_NEED_UI'
 
 CASE LNERROR = 12036
 
    LCMESSAGE = 'ERROR_INTERNET_HANDLE_EXISTS'
 
 CASE LNERROR = 12037
 
    LCMESSAGE = 'ERROR_INTERNET_SEC_CERT_DATE_INVALID'
 
 CASE LNERROR = 12038
 
    LCMESSAGE = 'ERROR_INTERNET_SEC_CERT_CN_INVALID'
 
 CASE LNERROR = 12039
 
    LCMESSAGE = 'ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR'
 
 CASE LNERROR = 12040
 
    LCMESSAGE = 'ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR'
 
 CASE LNERROR = 12041
 
    LCMESSAGE = 'ERROR_INTERNET_MIXED_SECURITY'
 
 CASE LNERROR = 12042
 
    LCMESSAGE = 'ERROR_INTERNET_CHG_POST_IS_NON_SECURE'
 
 CASE LNERROR = 12043
 
    LCMESSAGE = 'ERROR_INTERNET_POST_IS_NON_SECURE'
 
 CASE LNERROR = 12044
 
    LCMESSAGE = 'ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED'
 
 CASE LNERROR = 12045
 
    LCMESSAGE = 'ERROR_INTERNET_INVALID_CA'
 
 CASE LNERROR = 12046
 
    LCMESSAGE = 'ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP'
 
 CASE LNERROR = 12047
 
    LCMESSAGE = 'ERROR_INTERNET_ASYNC_THREAD_FAILED'
 
 CASE LNERROR = 12048
 
    LCMESSAGE = 'ERROR_INTERNET_REDIRECT_SCHEME_CHANGE'
 
 CASE LNERROR = 12049
 
    LCMESSAGE = 'ERROR_INTERNET_DIALOG_PENDING'
 
 CASE LNERROR = 12050
 
    LCMESSAGE = 'ERROR_INTERNET_RETRY_DIALOG'
 
 CASE LNERROR = 12052
 
    LCMESSAGE = 'ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR'
 
 CASE LNERROR = 12053
 
    LCMESSAGE = 'ERROR_INTERNET_INSERT_CDROM'
 
 CASE LNERROR = 12110
 
    LCMESSAGE = 'FTP_TRANSFER_IN_PROGRESS'
 
 CASE LNERROR = 12111
 
    LCMESSAGE = 'FTP_DROPPED'
 
 CASE LNERROR = 12112
 
    LCMESSAGE = 'FTP_NO_PASSIVE_MODE'
 
 CASE LNERROR = 12157
 
    LCMESSAGE = 'ERROR_INTERNET_SECURITY_CHANNEL_ERROR'
 
 CASE LNERROR = 12158
 
    LCMESSAGE = 'ERROR_INTERNET_UNABLE_TO_CACHE_FILE'
 
 CASE LNERROR = 12159
 
    LCMESSAGE = 'ERROR_INTERNET_TCPIP_NOT_INSTALLED'
 
 CASE LNERROR = 12163
 
    LCMESSAGE = 'ERROR_INTERNET_DISCONNECTED'
 
 CASE LNERROR = 12164
 
    LCMESSAGE = 'ERROR_INTERNET_SERVER_UNREACHABLE'
 
 CASE LNERROR = 12165
 
    LCMESSAGE = 'ERROR_INTERNET_PROXY_SERVER_UNREACHABLE'
 
 CASE LNERROR = 12166
 
    LCMESSAGE = 'ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT'
 
 CASE LNERROR = 12167
 
    LCMESSAGE = 'ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT'
 
 CASE LNERROR = 12169
 
    LCMESSAGE = 'ERROR_INTERNET_SEC_INVALID_CERT'
 
 CASE LNERROR = 12170
 
    LCMESSAGE = 'ERROR_INTERNET_SEC_CERT_REVOKED'
 
 CASE LNERROR = 18
 
    LCMESSAGE = 'ERROR_NO_MORE_FILES'
 
 CASE LNERROR = 6
 
    LCMESSAGE = 'ERROR_INVALID_HANDLE'
 
 CASE LNERROR = 2
 
    LCMESSAGE = 'ERROR_FILE_NOT_FOUND'
 
 CASE LNERROR = 3
 
    LCMESSAGE = 'ERROR_PATH_NOT_FOUND'
 
 CASE LNERROR = 5
 
    LCMESSAGE = 'ERROR_ACCESS_DENIED'
 
 CASE LNERROR = 80
 
    LCMESSAGE = 'ERROR_FILE_EXISTS'
 
 CASE LNERROR = 87
 
    LCMESSAGE = 'ERROR_INVALID_PARAMETER'
 
 OTHERWISE 
 
    LCMESSAGE = '帤眭腔渣昫陓洘'
 
 ENDCASE 
 
 RETURN LCMESSAGE
 
ENDPROC
 
*------ 
 
ENDDEFINE
 
*------* | 	 
  _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
#############################
  Ruey 在 星期日 九月 14, 2003 7:49 pm 作了第 4 次修改 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 2 樓
  | 
		
			
				 發表於: 星期日 七月 27, 2003 1:48 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				*本程式由 Larry 撰寫之 FTP上下傳程式節錄(轉貼來源阿貴)
 
&& 宣告 wininet.dll
 
DECLARE INTEGER InternetOpen IN wininet ;		&& 開啟 internet 連結
 
	STRING sAgent, ;
 
	INTEGER lAccessType, ;
 
	STRING sProxyName, ;
 
	STRING sProxyBypass, ;
 
	STRING  lFlags 
 
 
DECLARE INTEGER InternetConnect IN wininet;		&& 連結 ftp or http
 
        INTEGER hInternetSession, STRING  sServerName,; 
 
        INTEGER nServerPort, STRING  sUsername,; 
 
        STRING  sPassword, INTEGER lService,; 
 
        INTEGER lFlags, INTEGER lContext 
 
 
DECLARE INTEGER FtpPutFile IN wininet.dll;  && 上傳
 
	INTEGER hConnect,;  
 
	STRING  lpszLocalFile,;  
 
	STRING  lpszNewRemoteFile,;  
 
	INTEGER dwFlags,;  
 
	INTEGER dwContext  
 
 
***** 開始連線
 
    sAgent = "vfp7"		&& 自訂一個名稱(隨便)
 
    sProxyName = 0		&& 不使用Proxy server  -->vb 不是 chr(0) 是用 null
 
    sProxyBypass = 0		&& 不回復訊息
 
    lFlags = 0			&& 預設值
 
 
* 開啟連結  (建立 internet session)
 
*!*	    hOpen = InternetOpen (sAgent, INTERNET_OPEN_TYPE_DIRECT,; 
 
*!*	        sProxyName, sProxyBypass, lFlags) 
 
    hOpen = InternetOpen (sAgent, 1, sProxyName, sProxyBypass, lFlags)
 
 
 
IF hOpen = 0 && 如果傳回0代表不成功
 
	wait window '無法開啟連結'
 
	RETURN
 
ENDIF 
 
     
 
    * 設定登入的使用者名稱 
 
	strHost = '203.133.5.35'		&&  要登入的ftp位址或名稱
 
	port=21					&& ftp 的通訊埠
 
	strUser = ''					&& 使用者名稱
 
	strPwd = ''					&& 密碼
 
 
   ************** 連線至 ftp
 
*!*	    hFtpSession = InternetConnect (hOpen, strHost, port, strUser, strPwd, INTERNET_SERVICE_FTP, 0, 0) 
 
	hFtpSession = InternetConnect (hOpen, strHost, port, strUser, strPwd, 1, 0, 0)
 
 
	IF hFtpSession = 0
 
		wait window '無法連上 FTP'
 
		RETURN 
 
	ENDIF 
 
 
	lcSource  = 'D:	est.xls' && 上傳檔
 
	lcTarget  = 'test.xls' && 目的檔
 
       
 
*!*	  IF FtpPutFile (hFtpSession, lcSource,lcTarget, FTP_TRANSFER_TYPE_BINARY, 0) = 1
 
	IF FtpPutFile (hFtpSession, lcSource,lcTarget, 2, 0) = 1
 
		wait window '上傳成功'
 
	ELSE
 
		wait window '上傳失敗'
 
	ENDIF _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 3 樓
  | 
		
			
				 發表於: 星期日 七月 27, 2003 1:50 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				*本程式由 Larry 撰寫之 FTP上下傳程式節錄
 
 
* lAccessType - internet 連結的存取方式 
 
#DEFINE INTERNET_INVALID_PORT_NUMBER 0 
 
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1 
 
#DEFINE INTERNET_OPEN_TYPE_PROXY 3 
 
#DEFINE INTERNET_DEFAULT_FTP_PORT 21 
 
#DEFINE INTERNET_FLAG_ASYNC 268435456 && &H10000000 
 
#DEFINE INTERNET_FLAG_FROM_CACHE 16777216 && &H1000000 
 
#DEFINE INTERNET_FLAG_OFFLINE 16777216 
 
#DEFINE INTERNET_FLAG_CACHE_IF_NET_FAIL 65536 && &H10000 
 
#DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0 
 
#DEFINE FTP_TRANSFER_TYPE_ASCII 1 
 
#DEFINE FTP_TRANSFER_TYPE_BINARY 2 
 
#DEFINE INTERNET_SERVICE_FTP 1 
 
#DEFINE INTERNET_SERVICE_GOPHER 2 
 
#DEFINE INTERNET_SERVICE_HTTP 3 
 
#DEFINE FILE_ATTRIBUTE_NORMAL 128 && 0x00000080 
 
 
&& 宣告 wininet.dll 
 
DECLARE INTEGER InternetOpen IN wininet; && 開啟 internet 連結 
 
STRING sAgent, INTEGER lAccessType, STRING sProxyName,; 
 
STRING sProxyBypass, STRING lFlags 
 
 
DECLARE INTEGER InternetCloseHandle IN wininet INTEGER hInet && 關閉 internet 連結 
 
 
DECLARE INTEGER InternetConnect IN wininet; && 連結 ftp or http 
 
INTEGER hInternetSession, STRING sServerName,; 
 
INTEGER nServerPort, STRING sUsername,; 
 
STRING sPassword, INTEGER lService,; 
 
INTEGER lFlags, INTEGER lContext 
 
 
DECLARE INTEGER FtpGetFile IN wininet; && 下載 ftp 檔案 
 
INTEGER hFtpSession, STRING lpszRemoteFile,; 
 
STRING lpszNewFile, INTEGER fFailIfExists,; 
 
INTEGER dwFlagsAndAttributes,; 
 
INTEGER dwFlags, INTEGER dwContext 
 
 
 
sAgent = "vfp7" && 自訂一個名稱(隨便) 
 
sProxyName = Chr(0) && 不使用Proxy server -->vb 不是 chr(0) 是用 null 
 
sProxyBypass = Chr(0) && 不回復訊息 
 
lFlags = 0 && 預設值 
 
 
* 開啟連結 (建立 internet session) 
 
hOpen = InternetOpen (sAgent, INTERNET_OPEN_TYPE_DIRECT,; 
 
sProxyName, sProxyBypass, lFlags) 
 
 
 
IF hOpen = 0 && 如果傳回0代表不成功 
 
MESSAGEBOX("找不到必須的檔案 WinInet.Dll",6+16,"錯誤訊息!") 
 
RETURN 
 
ELSE 
 
WAIT windows "Wininet access handle: " + LTRIM(STR(hOpen)) nowait 
 
ENDIF 
 
 
* 設定登入的使用者名稱 
 
strHost = "203.217.100.105" && 要登入的ftp位址或名稱(這的我的ip) 
 
strUser = "anonymous" && 使用者名稱 
 
strPwd = "anonymous" 
 
 
* 連線至 ftp 
 
hFtpSession = InternetConnect (hOpen, strHost,; 
 
INTERNET_INVALID_PORT_NUMBER,; 
 
strUser, strPwd,; 
 
INTERNET_SERVICE_FTP, 0, 0) 
 
 
IF hFtpSession = 0 
 
* 關閉由 internetopen 所產生的 hande 
 
= InternetCloseHandle (hOpen) 
 
MESSAGEBOX("測試失敗,請重新設定!...",6+16,"錯誤訊息!") 
 
RETURN 
 
ELSE 
 
MESSAGEBOX("測試成功!...",0+64,"訊息!") 
 
* 全部工作完時關閉由 internetopen 所產生的 hande,但如要再測下載的話不可關閉 
 
= InternetCloseHandle (hFtpSession) 
 
= InternetCloseHandle (hOpen) 
 
ENDIF 
 
 
RETURN .t. 
 
 
 
 
 
** 以下是下載 ftp 的檔案的指令 
 
lpszRemoteFile = "text.txt" && 要下載的檔案 
 
lpszNewFile = "c:\Temp\text.txt" && 要存檔的名稱 
 
fFailIfExists = 0 && 
 
dwContext = 0 
 
** 下載 ftp 檔案 
 
lnResult = FtpGetFile (hFtpSession, lpszRemoteFile, lpszNewFile,; 
 
fFailIfExists, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_ASCII,; 
 
dwContext) 
 
 
IF lnResult = 1 && 傳回1的話下載成功 
 
MODI FILE (lpszNewFile) && 開啟下載回來的檔案 
 
ELSE 
 
MESSAGEBOX("下載檔案失敗!...",6+16,"錯誤訊息!") 
 
ENDIF 
 
 
* 全部工作完時關閉由 internetopen 所產生的 hande 
 
= InternetCloseHandle (hFtpSession) 
 
= InternetCloseHandle (hOpen) 
 
RETURN 
 
 
 
&& 比較 wininet.ocx 及 wininet.dll 之後結果 ocx 每次工作時一定要先 open ftp 結束還要 close ftp 
 
&& 所以每次一直作重覆的工作,使用上效率大大的比不上 dll ,而且dll也不會發生之前有兄台說過的每一個 
 
&& 工作之後一定要等三秒鐘的情況發生效率有長足的提昇,用的上的人不妨改用 dll 的方式 
 
&& 如果有興趣的話下次再貼如何上傳,刪除,建立目錄,刪除目錄,及取得 ftp 所有檔案及目錄的方法 _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 4 樓
  | 
		
			
				 發表於: 星期二 七月 29, 2003 11:36 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				評語:做的很不錯,FTP作成類別
 
          建議最好還是參考第一篇的
 
 
myf1 作者:驕傲公主
 
FTP上下傳範例
 
記得Ezftp.ocx要註冊 _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Christopher
 
 
  註冊時間: 2003-07-29 文章: 1 來自: taipei
  第 5 樓
  | 
		
			
				 發表於: 星期四 七月 31, 2003 3:04 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				請問為何我用第二篇ㄉ下載,卻一直發生 "下載檔案失敗!..."
 
是否與 遠端檔案ㄉ檔名有關?(我直接用 "abc.txt" )
 
或是近端檔名有關?(我用 "abc.txt" ) | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 6 樓
  | 
		
			
				 發表於: 星期四 七月 31, 2003 3:10 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				第二篇ㄉ是上傳的,不要搞錯 _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		tanywei
 
 
  註冊時間: 2003-12-23 文章: 1
 
  第 7 樓
  | 
		
			
				 發表於: 星期三 十二月 24, 2003 5:20 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				請教各位大大:
 
我用第二篇上傳的方式,請問如何將上傳檔案設定上傳到想上傳的目錄下...
 
如lcTarget = '\\acc\test.exe' && 目的檔 
 
就是將test.exe放至ftp server 的acc資料夾上...
 
謝謝   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 8 樓
  | 
		
			
				 發表於: 星期四 十二月 25, 2003 5:05 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				裡頭要上傳的位址/帳號/密碼,下傳的目錄檔案,你沒有改到
 
第二篇文章沒有考慮到遠端目錄位置,這各需要參考第一篇修改.
 
但這無妨,範例是可以使用的
 
 
 
* 設定登入的使用者名稱 
 
strHost = "203.217.100.105" && 要登入的ftp位址或名稱(這的我的ip) 
 
strUser = "anonymous" && 使用者名稱 
 
strPwd = "anonymous" 
 
 
 
lcSource = 'D: est.xls' && 上傳檔 
 
lcTarget = 'test.xls' && 目的檔 _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 9 樓
  | 
		
			
				 發表於: 星期一 五月 24, 2004 10:23 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Ruey 寫到: | 	 		  評語:做的很不錯,FTP作成類別
 
          建議最好還是參考第一篇的
 
 
myf1 作者:驕傲公主
 
FTP上下傳範例
 
記得Ezftp.ocx要註冊 | 	  
 
 
 
他的程式中.有部分程式要改成
 
ConnectTo(ALLTRIM(ThisForm.HostName.Value) , ALLTRIM(ThisForm.UserName.Value) , ALLTRIM(ThisForm.PassWord.Value))
 
 
他忘了加入ALLTRIM.否則容易連不上 _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
 
 
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
 
 
          愛作夢 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		statan
 
 
  註冊時間: 2005-11-23 文章: 8
 
  第 10 樓
  | 
		
			
				 發表於: 星期三 十一月 08, 2006 4:01 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| Larry 大大 可否再提供 刪除及查詢的用法 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		alovexjh
 
 
  註冊時間: 2005-12-28 文章: 13 來自: 中國
  第 11 樓
  | 
		
			
				 發表於: 星期二 十一月 14, 2006 11:40 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				收了 学习中............. _________________ 小學上語文課時,老師講到帥字,我百思不得其解,旁邊得小妹妹偷偷遞過一把小鏡子一照,剎那間我明白了! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		whh
 
 
  註冊時間: 2010-04-16 文章: 166
 
  第 12 樓
  | 
		
			
				 發表於: 星期二 七月 03, 2012 5:17 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				請問我參考了這篇~ 
 
 
要RUN至少5分鐘這樣正常嗎...?
 
 
而且檔案上傳失敗
 
 
是哪個細節沒注意到嗎? | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 13 樓
  | 
		
			
				 發表於: 星期二 七月 03, 2012 5:54 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				檔案上傳失敗 , 
 
1.要注意是不是 FTP Server 的權限問題
 
2.檔案名稱編碼問題有時也得注意一下,Big5 or utf-8 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |