在创建目录之前,我无法使用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" />
答案 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调用,如果目录已经存在,它将会出错。