2012-11-28 37 views
1

好吧,这是不好的,但我有一个文件/ ftp服务器,为我的Web应用程序提供资源。客户端在我启动应用程序之前设置了ftp服务器。ColdFusion ...在CFLOOP内部进行CFHTTP调用

因此,当我在我的应用程序中显示图像时,它工作正常。即使它是跨域。现在,客户希望我能够为每个测试获取所有资产并将其捆绑在一个zip文件中。哦,他们不会升级,所以我们正在使用CF7!

所以好吧,我做了一个图像列表,然后我循环它并做循环内的cfhttp调用。将图像写入我设置的临时目录,然后将整个该死的东西拉起来。它的工作除了cfhttp调用。我得到第一个图像,然后什么也没有。

<cfset imageList = "image_01.png,image_02.png" /> 

<cfloop index="strImage" list="#imageList#" delimiters=","> 
    <cfhttp method="GET" url="#theImgPath##strImage#" path="#TempPath##OSdelim#images" result="objGet" /> 
</cfloop> 

第一张图片显示在服务器上,第二张图片没有。

任何想法,如果我做错了什么?

+2

要排除故障,切换图像的顺序,看看你现在是否得到另一个。 –

+0

我会看看我能否做到这一点。该列表实际上是通过解析xml数据生成的。一些非常难看的代码。 :)解析一堆垃圾,然后做一个列表追加。有人说在我将它传递给cfhttp之前确保我做了trim(),所以我也会尝试。这很时髦,但如果我在cfhttp调用之后立即转储objGet结果,则在循环的每次迭代后都会获得数据。 –

+0

由于您是从XML加载imageList,请在运行循环之前尝试使用列表,以验证它是否符合您的期望。 –

回答

0

我想尝试这样的:

<!--- Lose the forward slash at the end, CF isn't XHTML ---> 
<cfset imageList = "image_01.png,image_02.png"> 

<cfloop index="strImage" list="#imageList#" delimiters=","> 
    <cfset fileName = strImage> 
    <cfif not fileExists(TempPath & OSdelim & "images" & OSdelim & strImage)> 
     <cfhttp method="get" getAsBinary="yes" url="#theImgPath##strImage#" path="#TempPath##OSdelim#images" file="#localfile#"> 
     downloading... <br /> 
    <cfelse> 
     <cfoutput>#TempPath# #OSdelim# images #strImage# already exists</cfoutput><br /> 
    </cfif> 
</cfloop> 

的代码是未经测试,但我认为它应该工作,或至少给你,你用的路径去错在何处把握好(在你的情况)

+0

嗯,我不认为路径是一个问题。我得到一个文件,以便将映像存储在服务器上的路径是正确的。 –

+1

你试过我的代码了吗? –

+0

我做到了!出于某种原因,文档说不要使用file =“#localfile#”,因为该文件将被命名为无论请求是什么......这是问题所在。所以我添加了file =“#strImage#”,它的工作非常感谢你! –