Как получить доступ к объекту, созданному загрузкой cffile в coldfusion

У меня множество проблем, но я собираюсь сосредоточиться на одной из них. Как получить доступ к объекту, созданному из загрузки cffile. Я в настоящее время делаю так.

<cffile action="upload" destination="#Application.filePath#Pics/" filefield="image1" nameconflict="makeunique">
<cfif isDefined ("cffile.serverFile")>
<cfset image1Place = #cffile.serverFile#> 
</cfif>

но это не похоже на то, что это будет хорошо работать с загрузкой нескольких файлов, как это случилось в моем случае.


person d.lanza38    schedule 15.05.2012    source источник
comment
Что вы подразумеваете под не будет работать хорошо? К вашему сведению, после загрузки переменные cffile всегда существуют. Если не выдаст ошибку. Таким образом, утверждение isDefined ("cffile.serverFile") всегда верно.   -  person Leigh    schedule 15.05.2012
comment
Да, но что меня беспокоит, как coldfusion узнает, к какому файлу вы пытаетесь получить доступ. Или он просто запоминает ваше местоположение в массиве файлов, когда вы их используете. И если да, то каков пример их использования? Это первая команда cffile? или первая команда cffile, имеющая действие загрузки? Как он узнает, когда вы хотите перейти к следующему файлу.   -  person d.lanza38    schedule 15.05.2012
comment
Это зависит. Используете ли вы cffileupload или просто несколько <input type="file"> полей? Ваш код предполагает последнее... [b](Edit)[/b] Неважно. Я вижу, Джейк ответил на твой вопрос :)   -  person Leigh    schedule 15.05.2012


Ответы (1)


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

<cfset uploadResults = {}>
<cfloop list="#form.filelist#" index="myFile">
  <cffile action="upload" destination="#Application.filePath#Pics/"
    filefield="#myFile#" nameconflict="makeunique" 
    result='uploadResults.#myFile#'>

  <cfif StructKeyExists(uploadResults, myFile)>
    <cfset image1Place = uploadResults[myFile].serverFile> 
  </cfif>
</cfloop>
person Jake Feasel    schedule 15.05.2012
comment
Это должно быть так вовлечено? Вы не можете просто сделать что-то вроде result=name1 и получить к нему доступ с помощью name1.serverFile? - person d.lanza38; 15.05.2012
comment
Да, вы могли бы сделать это таким образом. Я просто подумал, что структура для их организации была бы более аккуратной. - person Jake Feasel; 15.05.2012
comment
Кроме того, если вы жестко запрограммируете результат на что-то вроде name1, вы застрянете с фиксированным набором полей загрузки. Я предполагал, что ваш список был динамическим. - person Jake Feasel; 15.05.2012
comment
Хорошо, это так. И я определенно хочу знать, как это сделать. Но в вашем ответе было просто куча других вещей, и я не знал, требовалось ли это как обходной путь или вы просто продвигали свой ответ на 1 шаг дальше ;-). Спасибо. Я также не очень часто использую colffusion, поэтому я никогда не видел точного синтаксиса. Хотя я предполагаю, что вы просто хранили его в массиве/структуре и обращались к нему таким образом. - person d.lanza38; 15.05.2012