Cfimage внутри CFC

Кажется, у меня возникла проблема с манипулированием фотографиями из моего CFC. Я получаю сообщение об ошибке, в котором говорится, что при попытке чтения изображения возникло исключение. Таким образом, вопрос довольно прост: есть ли проблемы с манипулированием файлами из CFC, а не из CFM?

    <cffunction name="imageResize" access="public" returntype="boolean">

    <cfargument name="filename">
    <cfset result = "true">

    <cfimage
    action = "resize"
    source = "#root#/documents/uploads/PHOTOS/#filename#"
    width = "400px"
    height = ""
    destination = "#root#/documents/uploads/PHOTOS/thumbs/#filename#"
    overwrite = "yes"></cfimage>

    <cfreturn result>
    </cffunction>

Спасибо


person aceslowman    schedule 31.05.2012    source источник
comment
Пробовали ли вы запускать тот же код в CFM, а не в CFC выше, прежде чем обвинять CFC?   -  person Henry    schedule 31.05.2012


Ответы (2)


Нет никаких проблем с наличием cfimage внутри cfc. Это то, что я делаю все время.

Я подозреваю, что у вас проблема в том, что переменная «root» неизвестна внутри вашей функции. Вероятно, вам также следует изменить область видимости вашей переменной результата и указать область использования вами переменной имени файла.

person Stephen Moretti    schedule 31.05.2012
comment
Спасибо! В этом случае есть ли какие-либо проблемы с тем, как я использую место назначения, если я хочу, чтобы изображение с измененным размером было помещено в папку thumbs? Я не мог найти ничего, что объясняло бы мне этот атрибут. - person aceslowman; 31.05.2012
comment
@AustinSlominski убедитесь, что root - это то, что вы ожидаете, поскольку оно не находится в области аргументов, и теперь его можно использовать для нескольких запросов, и это может быть не то, что вы хотите. - person Henry; 01.06.2012

Я нашел довольно много проблем с вашим кодом и исправил их, и он работает нормально. Вот проблемы.

  1. Имя функции «imageResize» необходимо изменить на какое-либо другое имя, поскольку предоставленное вами имя функции является существующей функцией coldfusion.

  2. Атрибут ширины в теге cfimage должен иметь целое число, например 420, а не 420 пикселей.

  3. Атрибуты источника и назначения в теге cfimage должны иметь абсолютный путь, например «D:\projects\test», а не «/test/images».

К вашему сведению: переменная «root», которую вы упомянули в своем коде, должна быть доступна в функции.

Вот исправленный код.

<cffunction name="imageResize2" access="public" returntype="boolean">
<cfargument name="filename">
<cfset result = "true">

<cfimage
action = "resize"
source = "D:\Projects\Test\images\#filename#"
width = "400"
height = ""
destination = "D:\Projects\Test\temp\#filename#"
overwrite = "yes" />

<cfreturn result>
</cffunction>

Да, нет проблем с управлением файлами/изображениями в cfc. Приведенный выше код работает как в cfs, так и в cfm.

person B S Nayak    schedule 13.07.2012