首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion CFFTP action="listdir“不返回任何内容

ColdFusion CFFTP action="listdir“不返回任何内容
EN

Stack Overflow用户
提问于 2013-10-30 16:22:53
回答 2查看 1.9K关注 0票数 2

我正在尝试使用CFFTP登录and .com的市场并下载一个帐户的订单。Buy.com允许您将FTP传输到您的帐户文件夹中,并以TXT文件的形式下载订单以供您自己参考。我知道我拥有的凭据很好,因为我可以使用任何FTP桌面程序成功地登录,所以这不是问题。

我有什么问题,实际上是列出FTP的根文件夹的内容。我应该看到这样的文件夹:

  • 取消
  • 实现
  • 库存
  • NewSku
  • 订单
  • 付款
  • 退款

文件夹" orders“包含带有客户订单的TXT文件,也是我最终想要获得列表的文件夹。但是,我得到了一个空的列表(当我在下面转储"dirlist“变量时,会得到一个空的查询),尽管CFFTP调用看起来连接和断开连接都很好。我尝试更改目录以获得"/“或"/Orders/",甚至是"/Orders”的列表,但都是空的。

这是我的代码(出于显而易见的原因,我编辑了用户名和密码)。任何想法都欢迎。

代码语言:javascript
复制
<cfparam name="dirlist" type="query" default="#queryNew('')#" />

<cfftp connection="myConnection"
    username="***************"
    password="*********"
    server="trade.marketplace.buy.com"
    action="open"
    stopOnError="yes"
    />

<p>Successful open? <cfoutput>#cfftp.succeeded#</cfoutput></p>

<cfftp connection="myConnection" 
    action="listdir" 
    stopOnError="yes" 
    name="dirlist" 
    directory="/Orders" 
    />

<cfdump var="#dirlist#" />

<cfftp connection="myConnection"
    action="close"
    stopOnError="yes"
    />

<p>Successful close? <cfoutput>#cfftp.succeeded#</cfoutput></p>

这些结果如浏览器所示("query“基本上是目录清单中的空var转储):

代码语言:javascript
复制
Successful open? YES

query

Successful close? YES
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 22:58:39

在烦躁了很久之后,我放弃了CFFTP。我不认为我做错了什么,代码是正确的,凭证是好的,没有任何东西阻止通过防火墙访问FTP帐户。

相反,我在edtftpj找到了一个运行良好的Java库。它是LGPL开放源码,它的API非常容易理解。

因此,我首先从他们的网站下载JAR文件,将其放入ColdFusion安装文件夹/bin文件夹,重新启动CF,然后使用以下代码:

代码语言:javascript
复制
<!--- page variables --->
<cfparam name="VARIABLES.ftp" type="any" default="" />
<cfparam name="VARIABLES.aFiles" type="array" default="#arrayNew(1)#" />
<cfparam name="VARIABLES.index" type="numeric" default="1" />
<cfparam name="VARIABLES.cLocalFolder" type="string" default="#expandPath('/integrations/buy/txt/queue/')#" />
<cfparam name="VARIABLES.cLocalFile" type="string" default="" />
<cfparam name="VARIABLES.cFileName" type="string" default="" />

<!--- create instance of edtftpj.jar custom FTP --->    
<cfset VARIABLES.ftp = createObject( "java", "com.enterprisedt.net.ftp.FileTransferClient" ) />

<!--- connect with custom java object and get the contents of the 'Orders' folder --->
<cfset VARIABLES.ftp.setRemoteHost( "trade.marketplace.buy.com" ) />
<cfset VARIABLES.ftp.setUserName( "*************" ) />
<cfset VARIABLES.ftp.setPassword( "*************" ) />
<cfset VARIABLES.ftp.connect() />

<cfset VARIABLES.ftp.changeDirectory('/Orders') />

<cfset VARIABLES.aFiles = ftp.directoryList(".") />

<!--- Proceed only if folder has contents --->
<cfif arrayLen(VARIABLES.aFiles)>

    <!--- Loop through ftp directory contents (files and folders) --->
    <cfloop from="1" to="#arrayLen(VARIABLES.aFiles)#" step="1" index="VARIABLES.index">

        <!--- Download only files and not folders --->
        <cfif VARIABLES.aFiles[VARIABLES.index].isFile()>

            <!--- Set the local file name and download to it --->
            <cfset VARIABLES.cFileName = aFiles[VARIABLES.index].getName() />
            <cfset VARIABLES.cLocalFile = VARIABLES.cLocalFolder & VARIABLES.cFileName />
            <cfset VARIABLES.ftp.downloadFile( VARIABLES.cLocalFile, VARIABLES.cFileName ) />

        </cfif>

    </cfloop>

</cfif>

<!--- Disconnect --->
<cfset VARIABLES.ftp.disconnect() />

我应该写一篇关于这方面的博文:)

票数 2
EN

Stack Overflow用户

发布于 2013-11-01 13:57:20

我发现一些FTP服务器需要目录路径末尾的通配符星号:

代码语言:javascript
复制
<cfftp connection="myConnection" 
    action="listdir" 
    stopOnError="yes" 
    name="dirlist" 
    directory="/Orders/*" 
    />

我通常也会添加passive=true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19688365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档