1

在创建目录之前,我无法使用 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

4 回答 4

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" />
于 2010-08-03T01:43:21.770 回答
1

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

于 2010-08-02T16:48:00.597 回答
0

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

于 2010-07-31T01:14:03.787 回答
0

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

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

于 2010-08-01T22:11:05.863 回答