загрузка файла, его переименование и размещение в определенном месте на сервере с помощью Coldfusion - PullRequest
0 голосов
/ 07 октября 2011

Пользователь отправляет файл из внешней 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. Будем благодарны за любые предложения о том, где я ошибаюсь и как я могу это исправить.

1 Ответ

4 голосов
/ 07 октября 2011

Проблема в & в вашем коде.Попробуйте это

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

Не путайте их.

...