cffile 目录和上传适用于某些数据库变量,但对于某些则不适用

cffile directory and upload works for some database variables but for some it doesn't

老实说,我不确定我的代码有什么问题。几个小时以来,我一直在试图找出问题所在,但无济于事。基本上我想做的是将图片上传到特定目录,文件名是 Suite#。但是,首先我必须检查几件事:

1) 检查文件夹是否已经存在。如果没有,请创建一个具有复杂城市变量的新文件,并在创建后上传带有 suite# 作为文件名的图片。 2)如果文件夹确实存在。只需将文件上传到相应的复杂城市变量文件夹即可。我从我页面上的 SQL 查询传递这两个查询字符串参数。

这是我的代码:

HTML:

<form name="driverkeylistform" id="form" enctype="multipart/form-data" action="fileuploadtest.cfm?Suite=#getOrder.SuiteNum#&Ordernum=#getOrder.ORDERNUM#" method="post" onsubmit="return validateForm()">

<div class="row" id="submittedButtons">
 <input type="file" name="fileUpload" id="file" class="form-control-file" accept="image/*" capture="camera" required onchange="return fileValidation()">
 <input type="submit" name="dbAction" class="btn btn-primary" value="Done/Upload/Send Email">
</div>

</form>

正在处理页面:

我尝试放置一个 cftry 和 catch 语句来捕获任何错误,但它给了我这个错误:

Attribute validation error for tag CFFILE. Caught an exception, type = Application

<!----Get Data---->
<cfquery name="communities" datasource="testData">
    SELECT DISTINCT
    [COMPLEX CITY] as COMPLEXCITY,
    [COMPLEX NAME] as COMPLEXNAME,
    [COMPLEX ST] as COMPLEXST,
    [ORDERNUM],
    [Suite##] AS SUITE
    FROM SCHEDULE
    WHERE SUITE = '#URL.Suite#'
    AND [ORDERNUM] = '#URL.Ordernum#'
</cfquery>

<cfset newFileName = #URL.Suite# />
<cfset defaultDirectory = "D:\uploads\" />
<cfset fileDestination = #communities.COMPLEXCITY# & "\" & #communities.COMPLEXNAME# & "\">

<!---Pull complex city and check to see if a folder is available in directory, if it is. Upload it into folder directory --->
<cftry>
<cfif directoryExists("#defaultDirectory##communities.COMPLEXCITY#")>
<cffile 
      action="upload" 
      accept="image/jpg, image/jpeg, image/png" 
      destination="#defaultDirectory##fileDestination#"
      nameconflict="makeunique" 
      filefield="form.fileUpload"
/>
<cfset sourcePath = #cffile.serverFileName# & "." & #cffile.serverFileExt# />
<cfset destinationPath = #newFileName# & "." & #cffile.serverFileExt# />
<cffile 
    action="rename" 
    source="#defaultDirectory##fileDestination##sourcePath#" 
    destination="#defaultDirectory##fileDestination##destinationPath#"
/>
<cfelse>
<!--- If it isn't, create folder of complex city variable, and upload it into that folder with file rename of Suite # as filename. --->
<cfdirectory
    action="create"
    directory="#defaultDirectory##fileDestination#"
>
<cffile 
      action="upload" 
      accept="image/jpg, image/jpeg, image/png" 
      destination="#defaultDirectory##fileDestination#"
      nameconflict="makeunique" 
      filefield="form.fileUpload"
/>
<cfset sourcePath = #cffile.serverFileName# & "." & #cffile.serverFileExt# />
<cfset destinationPath = #newFileName# & "." & #cffile.serverFileExt# />
<cffile 
    action="rename" 
    source="#defaultDirectory##fileDestination##sourcePath#" 
    destination="#defaultDirectory##fileDestination##destinationPath#"
/>
</cfif>
<cfcatch type="any">
    <cfoutput>
            <p>#cfcatch.message#</p> 
            <p>Caught an exception, type = #CFCATCH.TYPE#</p> 
    </cfoutput>
</cfcatch>

我应该注意:文件上传功能适用于某些用户。比如这个例子。:

但不是为了这个而是 returns 我开始执行 cftry 块的 500 内部服务器错误。

根据聊天记录: <cfif directoryExists()> 需要包含完整的文件目标,因此需要添加 communities.COMPLEXNAME。我会推荐 <cfif directoryExists("#defaultDirectory##fileDestination#")>.

此外,引用 serverFileNameserverFileExt 的行需要查看客户端文件名,应更新为 clientFileNameclientFileExt.