我想从作为web服务使用的cfc中调用cfc。web服务只是向调用者返回一个状态通知,但我需要启动另一个cfc来启动一些打开ftp的进程,获取一个文件并将其下载到我们的服务器。目前我得到了这个错误。Action GetFile导致550无法打开文件。详细信息错误: 550无法打开文件。。消息在FTP GetFile操作过程中发生错误。打开文件。。
当我直接从一个url或从另一个页面调用cfc进程时,它工作得很好。任何帮助都将不胜感激。
Web服务代码:
<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>
整个错误: Action GetFile导致550无法打开文件。详细信息错误: 550无法打开文件。。消息在FTP GetFile操作过程中发生错误。FTP coldfusion.tagext.net.FtpHandler$FtpOperationException:在StackTrace GetFile操作期间发生错误。在coldfusion.tagext.net.FtpHandler.checkError(FtpHandler.java:189)在coldfusion.tagext.net.FtpHandler.getFile(FtpHandler.java:682)在coldfusion.tagext.net.FtpTag.doStartTag(FtpTag.java:763)在coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2991)在cfImportRCMOrders2ecfc184096832$funcGETRCMORDERFILES.runFunction(C:\inetpub\wwwroot\imarkwebservice\rcm\dynamic\ImportRCMOrders.cfc:56)在coldfusion.runtime.UDFMethod.invoke(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) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424) at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:399)在cfcfc_init2ecfm454010022.runPage(C:\inetpub\wwwroot\imarkwebservice\rcm\dynamic\cfc_init.cfm:14) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ApplicationFilter.invoke(coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:42) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:142) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:78) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:219) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at coldfusion的NoCacheFilter.java:58)。monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apachejava.util.concurrent.ThreadPoolExecutor.runWorker(Unknown源的.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) ) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown源的)java.lang.Thread.run的org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) (未知源)
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文件名batchfile_35506.csv LOGIN_PASSWORD密码LOGIN_USERID userid
struct BATCHNUMBER 35506文件名batchfile_35506.csv FTPORDERSDIR /目录/35506/
发布于 2015-05-22 04:21:12
来自FTP客户端的550表示文件或目录不存在。检查您的路径是否正确,该文件是否存在于该路径下,以及您登录的用户(在FTP调用中)是否具有访问此文件的权限。
我假设GetRCMOrderFiles()函数正在尝试从FTP检索文件。
您也应该捕获这些异常,并可能在执行get之前检查该文件是否存在。
https://stackoverflow.com/questions/30382389
复制相似问题