Почему я не могу передать поле формы типа file в CFFUNCTION, используя синтаксис структуры?

Я пытаюсь передать поле формы типа «файл» в CFFUNCTION. Тип аргумента — «любой». Вот синтаксис, который я пытаюсь использовать (псевдокод):

         

Цикл выполняется, потому что есть пять полей формы с именами «attachment1», «attachment2» и др.

Это вызывает исключение в функции:

coldfusion.tagext.io.FileTag$FormFileNotFoundException: поле формы C:  ColdFusion8  ...  neotmp25080.tmp не содержало файла.  

Однако этот синтаксис ДЕЙСТВИТЕЛЬНО работает:

      

I не люблю писать такой код во втором примере. Мне это кажется плохой практикой.

Итак, может ли кто-нибудь сказать мне, как использовать синтаксис структуры для правильной передачи поля формы типа файла в CFFUNCTION ??


В первом фрагменте кода значение #FORM [fieldname] # оценивается как имя загруженного файла. Таким образом, вы отправляете имя файла в свою функцию вместо имени поля, содержащего имя файла.

Если вы хотите придерживаться обозначения структуры, вы можете использовать

или

    

. Я также не думаю, что что-то не так с вашим (рабочим) вторым примером кода.

Edit:

It Кажется, что не может оценить поле файла, если вы передадите поле, используя нотацию структуры, из-за некоторой магии автоматической оценки параметра. После некоторых дополнительных исследований я обнаружил, что передача только имени поля формы без префикса формы также будет работать.

    

Параметр поля файла задокументирован как строка, содержащая имя поля формы без префикса. Мой последний подход кажется мне более «правильным». Это даже немного скроет реализацию. Я также не столько о том, чтобы составлять scope/struct var/keys вне компонента или функции, а затем передавать их в функцию. Лучше сделать это в самой функции.

Оцените статью
Botgadget.ru
Добавить комментарий