用户从前端HTML表单提交文件,该表单包含分部,部门名称,部门编号,部门编号,年份,电子邮件,电话等字段。正在提交的文件可能具有用户指定的名称。但是,当它上传时,我希望它被命名为Departmentname_departmentnumber_sectionnumber
。
因此,如果部门为Accounting
,部门编号为123
且部分为1
,则文件名称为Accounting_123_1.doc
。扩展名将是提交的任何类型的文件(文本,MS-Word的.doc或.docx,PDF或RTF),用户可以上传扩展名为.txt,.doc,.docx,pdf,rtf的文件附件。
另外,我希望它存储在服务器上的特定位置。因此,如果部门是公司财务,年份是2011-2012,则应将其存储在"E:\Files Submitted\2011-2012\Corporate Finance\"
的服务器上。 "E:\Files Submitted\"
部分在目录名称中保持相同。
<cfset submittedfileName = #form.departmentname#&"_"&#form.departmentnumber#&"_"&#form.section_number_1#&"."&#cffile.ClientFileExt#>
<cfset filedirectoryYear = "E:\Files Submitted\"&#form.current_year#&"\"&#form.division#&"\">
<!--- ensure that the user uploads attachments of type with extension .txt, .doc, .docx, pdf, rtf only--->
<cfif FORM.attachment_1 neq "">
<cffile action="upload"
accept="text/plain,application/msword,application/pdf,application/rtf"
filefield="attachment_1"
destination="E:\temp\uploads"
nameconflict="Makeunique"
>
<!--- rename the file and move it to permanent destination --->
<cffile action="rename"
source="E:\temp\uploads\#cffile.serverFileName#"
destination=#filedirectoryYear#&#submittedfileName#&#cffile.ClientFileExt#
>
<!--- now create a temporary variable for the attachment so that it can be emailed later on --->
<cfset attachment_local_file_1 = #filedirectoryYear#&#submittedfileName#&#cffile.ClientFileExt#>
</cfif>
我使用了cffile.ClientFileExt
,因为文件是在没有扩展程序的情况下上传的,但我在destination=#filedirectoryYear#&#submittedfileName#&#cffile.ClientFileExt#
收到错误
"multiple items at this position: Missing Token > or />
我正在使用Coldfusion 8.任何建议都会在我错误的地方以及如何解决它时受到赞赏。
答案 0 :(得分:4)
问题在于代码中的&
。试试这个
<cffile
action="rename"
source="E:\temp\uploads\#cffile.serverFileName#"
destination="#filedirectoryYear##submittedfileName##cffile.ClientFileExt#"
>
ColdFusion中的字符串连接要么通过变量插值发生
<cfset foo = "FixedString_#variable#_FixedString">
或作为表达
<cfset foo = "FixedString" & variable & "FixedString">
不要混淆两者。