我想从作为Web服务使用的cfc调用cfc。 Web服务只是将状态通知返回给调用者,但是我需要启动另一个cfc以启动一些打开ftp的进程获取文件并将其下载到我们的服务器。目前我收到此错误。 动作GetFile 原因550无法打开文件。 细节错误:550无法打开文件。 。 消息FTP GetFile操作期间发生错误。打开文件。
当我直接从url调用进程cfc或从另一个页面调用时,它工作正常。任何帮助将不胜感激。
网络服务代码:
<cfargument name="FileName" required="yes" type="string">
<cfargument name="BatchNumber" required="yes" type="numeric">
<cfargument name="LOGIN_USERID" required="yes" type="string">
<cfargument name="LOGIN_PASSWORD" required="yes" type="string">
<cfset comparison = Compare(LOGIN_PASSWORD, "xxxxxxx")>
<cfif (LOGIN_USERID EQ "myid") AND (comparison EQ 0)>
<cfset xmlDoc = XmlNew()>
<cfset xmlDoc.XMLRoot = XMLElemNew(xmlDoc,"batchfiles")>
<cfset xmlDoc.batchfiles.XmlChildren[1] = XmlElemNew(xmlDoc,"batch")>
<cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"batchnumber"))>
<cfset xmlDoc.batchfiles.XmlChildren[1].batchnumber.XMLText="#batchnumber#">
<cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"filename"))>
<cfset xmlDoc.batchfiles.XmlChildren[1].filename.XMLText="#filename#">
<cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"status"))>
<cfset xmlDoc.batchfiles.XmlChildren[1].status.XMLText="Notification Received OK">
<cfinvoke component="ImportRCMOrders" method="GetRCMOrderFiles">
<cfinvokeargument name="FileName" value="#filename#">
<cfinvokeargument name="BatchNumber" value="#batchnumber#">
</cfinvoke>
<cfreturn xmlDoc>
<cfelse>
<cfoutput>Unauthorized Access. Please check username / password and ty again.</cfoutput>
<cfabort>
</cfif>
完整错误: 动作GetFile 原因550无法打开文件。 细节错误:550无法打开文件。 。 消息FTP GetFile操作期间发生错误。 StackTrace coldfusion.tagext.net.FtpHandler $ FtpOperationException:FTP GetFile操作期间发生错误。 at coldfusion.tagext.net.FtpHandler.checkError(FtpHandler.java:189)at coldfusion.tagext.net.FtpHandler.getFile(FtpHandler.java:682)at coldfusion.tagext.net.FtpTag.doStartTag(FtpTag.java:763) )在coldfusion.runtime.UDFMethod.invoke的cfImportRCMOrders2ecfc184096832 $ funcGETRCMORDERFILES.runFunction(C:\ inetpub \ wwwroot \ imarkwebservice \ rcm \ dynamic \ ImportRCMOrders.cfc:56)的coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2991) (UDFMethod.java:487)coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke(UDFMethod.java:420)at coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke(UDFMethod.java:383)at coldfusion.filter.FunctionAccessFilter.invoke( FunctionAccessFilter.java:95)在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648 )在coldfusion.runtime.CfJspPage._invoke(CfJs)的coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457) pPage.java:2424)在coldfusion上的cfcfc_init2ecfm454010022.runPage(C:\ inetpub \ wwwroot \ imarkwebservice \ rcm \ dynamic \ cfc_init.cfm:14)的coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:399)。 runtime.CfJspPage.invoke(CfJspPage.java:246)在coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)在coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)在coldfusion.filter .ffincludeFilter.invoke(CfincludeFilter.java:65)at coldfusion.filter.IpFilter.invoke(IpFilter.java:45)at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:487)at coldfusion.filter.RequestMonitorFilter.invoke( RequestMonitorFilter.java:42)at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)at coldfusion.filter.PathFilter.invoke(PathFilter.java:142)coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) )coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:78)at coldfusion.filter.ClientScopePersistenceFilter.invoke(Client ScopePersistenceFilter.java:28)在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)在coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38 )在coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)在coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)在coldfusion.CfmServlet.service(CfmServlet.java:219)在coldfusion.bootstrap.BootstrapServlet 。服务(BootstrapServlet.java:89)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)处的ColdFusion org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)。 monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)的coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) .apache.catalina.core.ApplicationFilter Chain.doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)在组织.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve) .java:102)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)org.apache.coyote。 org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)中的ajp.AjpProcessor.process(AjpProcessor.java:199)位于org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint。 java:314)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecuto r $ Worker.run(未知来源)atg.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Unknown Source)
GetRCMOrderFiles:
<!--- Open FTP connection --->
<cfftp connection ="FTPRequest"
action ="OPEN"
username ="xxxxxx"
password ="xxxx"
server ="ftp.server.com"
stopOnError ="Yes"
timeout="36000">
<!--- List directories --->
<cfftp connection = "FTPRequest"
action = "LISTDIR"
stopOnError = "Yes"
name = "ftpQuery"
directory = "#arguments.ftpOrdersDir#">
<!--- Download ftp files --->
<cfif ftpQuery.recordcount GT 0>
<cfif ftpQuery.Name EQ arguments.filename>
<cfset extension = LCase(listLast(arguments.filename,".")) >
<cfif extension EQ 'csv'>
<cftry>
<!--- Download ftp files --->
<cfftp connection = "FTPRequest"
action = "GetFile"
name = "dlFiles"
remotefile="#ftpOrdersDir##arguments.filename#"
localfile="#ExpandPath('/mydir/dynamic/orders/'& arguments.filename)#"
failifexists="no"
stoponerror="yes">
<!--- Rename files in ftp processed dir --->
<cfftp connection = "FTPRequest"
action = "RENAME"
existing="#arguments.ftpOrdersDir##arguments.filename#"
new="#arguments.ftpOrdersDir##arguments.filename#.#DateFormat(Now(), 'mmddyyyy')##Hour(Now())##Minute(Now())##Second(Now())#"
stopOnError = "Yes">
<cfcatch type="any">
<cfmail type="html"
to="email@myemailacct.com"
from="FTPProcess@myemailacct.com"
subject="FTP Error">
<p> An error occurred on #DateFormat( Now(), "mmm d, yyyy" )# at #TimeFormat( Now(), "hh:mm TT" )# </p>
Error Message: #cfcatch.message#<br>
Error Detail: #cfcatch.detail#<br>
Error Location: #GetBaseTemplatePath()#<br>
<cfdump var="#cfcatch#">
</cfmail>
<cfabort>
</cfcatch>
</cftry>
</cfif>
这是来自第一个被称为Web服务的函数。 结构: BATCHNUMBER 35506 FILENAME batchfile_35506.csv LOGIN_PASSWORD密码 LOGIN_USERID用户标识
结构 BATCHNUMBER 35506 FILENAME batchfile_35506.csv FTPORDERSDIR / Dir / 35506 /
答案 0 :(得分:1)
来自FTP客户端的550意味着该文件或目录不存在。检查您的路径是否正确以及该路径中是否存在该文件,以及您在(在FTP调用中)登录的用户是否具有此文件的权限。
我假设GetRCMOrderFiles()函数正在尝试从FTP检索文件?
您应该将这些作为例外捕获,并且可能在执行get之前检查该文件是否存在。