2012-11-28 112 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#」,它的工作非常感謝你! –