| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3383 人关注过本帖
标题:FtpPutFile()调用失败,错误号12018,如何解决?
只看楼主 加入收藏
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
结帖率:96.03%
收藏
已结贴  问题点数:20 回复次数:7 
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
用的是HTTP协议?
http是超文本传输协议
ftp是文件传输协议
2019-09-08 20:38
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
问题是FtpPutFile()是用FTP协议,不能用HTTP的吧
2019-09-09 22:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
给个FTP来测试下
2019-09-09 22:20
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:20 
问题是“FtpPutFile()调用失败”,上传文件到FTP服务端,与DownloadFile没什么关系吧。
编程的东西有时吹水是说不清, 要提供FTP服务的IP、端口、用户名和密码进行测试。
2019-09-11 04:45
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
收藏
得分:0 
谢吹版。
2019-09-11 11:00
快速回复:FtpPutFile()调用失败,错误号12018,如何解决?
数据加载中...
 
   



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

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