2010-07-30 121 views
1

我在創建目錄之前正在使用cffile時遇到問題。我正在使用cffileupload標記,並且我的url屬性是具有以下代碼的頁面。基本上下面的代碼創建一個新目錄並將所有圖像上傳到該目錄。但是,它在第​​二次上傳時失敗,並且在cffileupload flash對象中出現500錯誤。但是,如果我對目錄路徑進行硬編碼,它們都會正常上傳。任何人都知道我爲什麼會遇到這個問題?將文件上傳到Coldfusion中新創建的目錄

<!--- User will upload all the images to a temp directory based on date and time ---> 
<cfset uploadFolderPath = "C:\ColdFusion9\wwwroot\MyApplication\uploads\" /> 
<cfset date=DateFormat(Now(),'mm-dd-yyyy_') /> 
<cfset time=TimeFormat(Now(),'hh-mm-ss') /> 
<cfset newFolderName = "upload_" & date & time /> 
<cfset newFolder = uploadFolderPath & newFolderName /> 
<cfdirectory action = "create" directory="#newFolder#" /> 

<cffile action="uploadall" destination="#newFolder#" nameconflict="makeunique" /> 

回答

0

您應該先檢查目錄是否存在,然後再創建它,否則會出錯?

0

使用基於flash的cffileupload可能會導致您失去應該看到的寶貴調試消息。你也可以掛上一個像Fiddler這樣的代理來查看ColdFusion實際上正在接收/發送的內容。發佈相關的例外信息將會很有幫助。

正如raulriera所述,您的問題可能在於創建新文件夾的cfdirectory調用,如果該目錄已經存在,則會出錯。

1

好吧,我發現cffileupload中的url路徑被稱爲每個上傳的文件,所以它失敗了,因爲處理腳本是試圖從上一個上傳的文件創建一個已經存在的目錄同一秒)。在創建它之前檢查目錄是否存在解決了我的問題。

3

使用以下編碼。我在現有編碼中添加了「DirectoryExists」功能。

<cfset uploadFolderPath = GetDirectoryFromPath(GetCurrentTemplatePath()) /> 
<cfset date =DateFormat(Now(),"mm-dd-yyyy") /> 
<cfset time = TimeFormat(Now(),"hh-mm-ss") /> 
<cfset newFolderName = "upload_" & date & time /> 
<cfset newFolder = uploadFolderPath & newFolderName /> 

<cfif NOT DirectoryExists(currentDirectory)> 
    <cfdirectory action = "create" directory="#newFolder#" /> 
</cfif> 

<cffile action="uploadall" destination="#newFolder#" nameconflict="makeunique" />