2010-07-30 112 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" /> 
相关问题