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

时间:2017-10-23 18:14:18

标签: html coldfusion

enter image description here我真的不确定我的代码有什么问题。我一直试图找出问题几个小时现在无济于事。基本上我要做的是将图片上传到特定目录,其中Suite#作为文件名。但是,首先我必须检查几件事:

1)检查文件夹是否已存在。如果没有,请创建一个具有复杂城市变量的新变量,一旦创建它就上传带有#套件#作为文件名的图片。 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语句来捕获任何错误,它给了我这个错误:

  

标记CFFILE的属性验证错误。抓到异常,输入=   应用

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

我应该注意:文件上传功能适用于某些用户。就像这个例子一样。:

enter image description here

但不是为了这个而是返回一个500内部服务器错误,我开始做cftry块。

enter image description here

1 个答案:

答案 0 :(得分:2)

根据聊天情况: <cfif directoryExists()>需要包含完整文件目标,因此需要添加communities.COMPLEXNAME。我建议<cfif directoryExists("#defaultDirectory##fileDestination#")>

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