标题:FtpPutFile()调用失败,错误号12018,如何解决?
取消只看楼主
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
结帖率:96.03%
已结贴  问题点数:20 回复次数:3 
FtpPutFile()调用失败,错误号12018,如何解决?
**功能:实现上传文件到服务器
 
   #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

    Declare INTEGER InternetOpen IN wininet  STRING sAgent, INTEGER lAccessType, STRING sProxyName,STRING sProxyBypass, STRING  lFlags

    Declare INTEGER InternetCloseHandle IN wininet INTEGER hInet

    Declare INTEGER InternetConnect IN wininet  INTEGER hInternetSession, STRING  sServerName,INTEGER nServerPort, STRING  sUsername,STRING  sPassword, INTEGER lService, INTEGER lFlags, INTEGER lContext

    Declare INTEGER FtpPutFile IN wininet INTEGER hFtpSession, STRING  lpszRemoteFile,STRING  lpszNewFile, INTEGER fFailIfExists,INTEGER dwFlagsAndAttributes,INTEGER dwFlags, INTEGER dwContext
   
    DECLARE LONG GetLastError IN Kernel32.dll

    sAgent = "var1"

    sProxyName = Chr(0)

    sProxyBypass = Chr(0)

    lFlags = 0

    hOpen = InternetOpen (sAgent, INTERNET_OPEN_TYPE_DIRECT,sProxyName, sProxyBypass, lFlags)

    If hOpen = 0

    =MESSAGEBOX("找不到库 WinInet.Dll 的入口",16,"警告")

    Return

    Endif
 

    *在此修改自己的FTP服务器数据

    strHost = "https://spritedown.oss-cn-hangzhou.  &&存放升级文件的FTP服务器地址

    strUser = "null"  &&升级的FTP用户名

    strPwd  = "null"  &&FTP用户密码

    hFtpSession = InternetConnect (hOpen, strHost,0,null,null,3, 0, 0) &&改为3,过了

    If hFtpSession = 0

    = InternetCloseHandle (hOpen)

    =MESSAGEBOX("找不到指定的服务器",16,"  警告")

    Return

    Endif

    *以下设置FTP的路径和文件名

    lpszRemoteFile = "https://spritedown.oss-cn-hangzhou.   
   
    lpszNewFile = "e:\农资小精灵\test1.txt"         

    fFailIfExists = 0        
    dwContext = 0
   
   lnResult = FtpPutFile (hFtpSession, lpszRemoteFile, lpszNewFile,fFailIfExists,FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_ASCII,dwContext)

    If lnResult # 1
        ? "errnum:", GetLastError()
        ? "上传文件失败!"
    Endif

    = InternetCloseHandle (hFtpSession)

    = InternetCloseHandle (hOpen)

搜索更多相关主题的帖子: FTP STRING INTEGER wininet Define 
2019-09-08 20:28
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
是HTTP,下面是源于你提供的一段代代码,我用了一段时间可以正常下载文件,您可否帮我修改一下,变成上传文件的。

SET SAFETY OFF
DECLARE LONG URLDownloadToFileA IN Urlmon LONG, STRING@, STRING@, LONG, LONG
DECLARE LONG DeleteUrlCacheEntry IN Wininet STRING@

DownloadFile("http://spriteupdate.oss-cn-shanghai., "e:\test2.txt")

CLEAR DLLS
FUNCTION DownloadFile(cURL, cLocalFileName)
    IF URLDownloadToFileA(0, @cURL, @cLocalFileName, 0, 0) == 0
        DeleteUrlCacheEntry(@cURL)
        RETURN .T.
    ENDIF
    RETURN .F.   
ENDFUNC
2019-09-09 11:36
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
3楼中您曾给的代码,不就是http协议吗?
就是这句:DownloadFile("http://spriteupdate.oss-cn-shanghai., "e:\test2.txt")
可以正常下载的。没有对就在的上传代码吗?
2019-09-10 06:12
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
谢吹版。
2019-09-11 11:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496740-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109352 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved