在我的應用程序中,用戶上傳照片,cfc調整照片大小,創建新圖像並將新圖像調整爲縮略圖。麻煩的是,這個功能在遊戲中並沒有提供。我現在想看看圖像目錄並找出哪些圖像沒有縮略圖。使用cfdirectory在兩個目錄中查找不匹配的文件並執行功能
我想,我可以用cfdirectory輸出兩個目錄的結構,然後遍歷所有的文件僅圖像中的存在,而不是在縮略圖目錄,然後運行一個函數來調整圖像,並將它們發送到縮略圖目錄。
這是有缺陷的想法嗎?有更容易的方法嗎?
在我的應用程序中,用戶上傳照片,cfc調整照片大小,創建新圖像並將新圖像調整爲縮略圖。麻煩的是,這個功能在遊戲中並沒有提供。我現在想看看圖像目錄並找出哪些圖像沒有縮略圖。使用cfdirectory在兩個目錄中查找不匹配的文件並執行功能
我想,我可以用cfdirectory輸出兩個目錄的結構,然後遍歷所有的文件僅圖像中的存在,而不是在縮略圖目錄,然後運行一個函數來調整圖像,並將它們發送到縮略圖目錄。
這是有缺陷的想法嗎?有更容易的方法嗎?
這是一個完全合理的方法,您甚至不必使用遞歸代碼。只需使用CFDirectory中的遞歸選項來獲取所有文件的列表,並使用文件名和路徑組合作爲密鑰,從而保證您正在檢查的唯一文件。您可能需要稍微修改一下結果,以便確切知道放置新縮略圖的位置,但這應該會讓您非常靠近。
<cfset originals_path = expandPath('originals') />
<cfset thumbs_path = expandPath('thumbs') />
<cfset no_thumbs = find_missing_thumbs(originals_path, thumbs_path) />
<cfdump var="#no_thumbs#" />
<cffunction name="find_missing_thumbs">
<cfargument name="o" />
<cfargument name="t" />
<cfset var originals = 0 />
<cfset var thumbs = 0 />
<cfset var missing_thumbs = [] />
<cfset var massaged_originals = 0 />
<cfset var massaged_thumbs = 0 />
<cfset var qSearch = 0 />
<cfdirectory action="list" directory="#arguments.o#" name="originals" recurse="true" />
<cfdirectory action="list" directory="#arguments.t#" name="thumbs" recurse="true" />
<cfquery name="massaged_originals" dbtype="query">
select name, directory + name as fullpath from originals
</cfquery>
<cfquery name="massaged_thumbs" dbtype="query">
select name, directory + name as fullpath from thumbs
</cfquery>
<cfloop query="massaged_originals">
<cfquery name="qSearch" dbtype="query">
select massaged_thumbs.name from massaged_thumbs where massaged_thumbs.fullpath = '#massaged_originals.fullpath#'
</cfquery>
<cfif qSearch.recordCount eq 0>
<cfset arrayAppend(missing_thumbs, massaged_originals.name) />
</cfif>
</cfloop>
<cfreturn missing_thumbs />
</cffunction>
對於一次性操作?每個文件中有多少個文件以及命名約定是什麼? – Leigh
@Leigh這是一次性操作。一個文件夾中有大約500個文件,縮略圖文件夾中有400個文件。他們都有相同的名稱,只是不同的文件夾...我用一些jQuery的縮略圖的文件名來調用圖像文件夾中的較大圖像。 – Ofeargall