将文件上传到Coldfusion中新创建的目录

时间:2010-07-30 23:14:31

标签: coldfusion cffile cfdirectory

在创建目录之前,我无法使用cffile。我使用的是cffileupload标记,我的url属性是一个包含以下代码的页面。基本上,下面的代码创建了一个新目录,并将所有图像上传到该目录。但是,它在第​​二次上传时失败,我在cffileupload flash对象中得到500错误。但是,如果我对目录路径进行硬编码,它们都可以正常上传。有谁知道我为什么会遇到这个问题?

<!--- 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" />

4 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:1)

好吧所以我发现cffileupload中的url路径是为每个上传的文件调用的,所以它失败了,因为处理脚本试图从上一个上传的文件中创建一个已存在的目录(发生在同一个文件中)第二)。在创建目录之前检查目录是否存在解决了我的问题。

答案 2 :(得分:0)

在正确创建目录之前,您应首先检查目录是否存在,否则会出错?

答案 3 :(得分:0)

使用基于闪存的cffileupload可能会导致您丢失应该看到的有价值的调试消息。您还可以连接像Fiddler这样的代理,以查看ColdFusion实际接收/发送的内容。发布相关的异常信息会很有帮助。

正如raulriera所说,你的问题可能在于创建新文件夹的cfdirectory调用,如果目录已经存在,它将会出错。