У меня есть форма, которую я хотел бы отправить компоненту для обработки (поведение CRUD), проблема в том, что кажется, что передача multipart/form-data компоненту каким-то образом теряет местоположение файла. Когда дело доходит до части компонента, которая должна загружать файл, я получаю печально известное поле формы, не содержащее ошибку файла.
Я не уверен на 100%, почему это происходит, но если я отправляю форму непосредственно на страницу .cfm, которая выполняет действие cffile
, все работает, как и ожидалось, но если страница .cfm делает что-то вроде:
<cfobject name="process_form" component="processor" />
<cfset result = process_form.upload( form ) />
и компонент "процессор" пытается выполнить загрузку, я получаю, что поле формы не содержит файла.
Мой процессор выглядит так:
<cfcomponent name="processor">
<cffunction name="upload" returntype="string">
<cfargument name="form_data" type="struct" />
<cffile action="upload" filefield="#arguments.form_data.file_1#" ...>
[ ... ]
</cffunction>
</cfcomponent>
Следует отметить одну вещь: если я попытаюсь использовать переменную arguments.form_data.file_1
без знаков # вокруг нее, я получу ошибку:
The form field arguments.form_data.file_1 did not contain a file.
Если я поставлю знаки # вокруг переменной, я получу:
The form field C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\neotmp7350969777287007477.tmp did not contain a file.
Любая идея о том, как решить эту проблему? Я бы предпочел, чтобы все мои действия по обработке были внутри компонента, но сейчас я не могу заставить это работать.
Спасибо! Буду