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#")>
.
此外,引用 serverFileName
和 serverFileExt
的行需要查看客户端文件名,应更新为 clientFileName
和 clientFileExt
.
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#")>
.
此外,引用 serverFileName
和 serverFileExt
的行需要查看客户端文件名,应更新为 clientFileName
和 clientFileExt
.