我真的不确定我的代码有什么问题。我一直试图找出问题几个小时现在无济于事。基本上我要做的是将图片上传到特定目录,其中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>
我应该注意:文件上传功能适用于某些用户。就像这个例子一样。:
但不是为了这个而是返回一个500内部服务器错误,我开始做cftry块。
答案 0 :(得分:2)
根据聊天情况:
<cfif directoryExists()>
需要包含完整文件目标,因此需要添加communities.COMPLEXNAME
。我建议<cfif directoryExists("#defaultDirectory##fileDestination#")>
。
此外,引用serverFileName
和serverFileExt
的行需要查看客户端文件名,并且应更新为clientFileName
和clientFileExt
。