ColdFusion ImageПишите в Amazon S3 - PullRequest
       9

ColdFusion ImageПишите в Amazon S3

3 голосов
/ 02 февраля 2012

Это странно - у меня «практически» идентичный код на 2 страницах, он работает на одной, но не на другой. Невероятно бесполезное сообщение об ошибке «Сообщение об ошибке S3». не проливает свет на то, где я ошибаюсь.

Приведенный ниже код идентичен на обеих страницах - единственное (очень небольшое) различие между двумя страницами заключается в способе генерации imgLink - на рабочей странице он получен из одного источника (канал XML) и cfset, на Нерабочая страница imgLink изначально устанавливается как 'none', а затем проверяется несколько источников, пока он не находит один - это все еще cfset таким же образом, и у меня есть cfif, чтобы убедиться, что он действителен перед обработкой. ОДНАКО - Я также попытался жестко кодировать источник (то есть вставить значение, которое обычно находится в наборе imgLink cfset), и он все еще не работает.

Я отлаживал это всеми возможными способами, которые я могу думать в последний день, но безуспешно. Итак, я думаю, что я ищу указатели на то, что еще я должен посмотреть, что может привести к его отказу.

Возвращена полная ошибка -

Произошла ошибка при выполнении операции создания файла для файла s3: //mybucket/1577-67BC4EF7-1B21-866F-32E95DF67F3336C6-f.jpg. Причина этого исключения: org.apache.commons.vfs.FileSystemException: неизвестное сообщение с кодом «Сообщение об ошибке S3». ..

И мой код:

<cfscript> 
        this.name ="Object Operations"; 
        this.s3.accessKeyId = "accessKey"; 
        this.s3.awsSecretKey = "secretKey"; 
        this.s3.defaultLocation="EU"; 
</cfscript> 
<!--- CFImage Stuff --->
<!--- S3 Permissions --->
<cfset perms = [{group="all", permission="read"}]>

<!--- Create the Images ---->
<cfset imageuuid = '#CreateUUID()#'>
<cfset imagefull = '#getid.id#-#imageuuid#-f.jpg'>
<cfset imagemain = '#getid.id#-#imageuuid#-m.jpg'>
<cfset imagethumb = '#getid.id#-#imageuuid#-t.jpg'>

<cfimage action="read" name="img1" source="#imgLink#">

<!--- Create the full size image 505 x N --->
<cfif img1.height GT img1.width>
    <cfif img1.width GTE 505>
        <cfset ImageResize(img1,'505','')>
    </cfif>
<cfelseif img1.width GT img1.height>
    <cfif img1.width GTE 505>
        <cfset ImageResize(img1, '505','')>
    </cfif>
</cfif>

<cfset ImageWrite(img1, "s3://mybucket/#imagefull#")>
<cfset StoreSetACL("s3://mybucket/#imagefull#","#perms#")>

<!--- Create the main size image 251 x N --->
<cfif img1.height GT img1.width>
    <cfif img1.width GTE 251>
        <cfset ImageResize(img1,'251','')>
    </cfif>
<cfelseif img1.width GT img1.height>
    <cfif img1.width GTE 251>
        <cfset ImageResize(img1, '251','')>
    </cfif>
</cfif>

<cfset ImageWrite(img1, "s3://mybucket/#imagemain#")>
<cfset StoreSetACL("s3://mybucket/#imagemain#","#perms#")>

<!--- Create the thumbnail 52 x 52 --->
<!--- resize image to 52 pixels tall if width is greater then height --->
<cfif img1.height GT img1.width>
    <cfset ImageResize(img1,'52','')>
    <cfset fromX = img1.Height / 2 - 26>
    <cfset ImageCrop(img1,0,fromX,52,52)>
<!--- resize image to 75 pixels wide if height is greater then width --->
<cfelseif img1.width GT img1.height>
    <cfset ImageResize(img1,'','52')>
    <cfset fromY = img1.Width / 2 - 26>
    <cfset ImageCrop(img1,fromY,0,52,52)>
<cfelse>
    <cfset ImageResize(img1,'','52')>
    <cfset ImageCrop(img1,0,0,52,52)>
</cfif>

<cfset ImageWrite(img1, "s3://mybucket/#imagethumb#")>
<cfset StoreSetACL("s3://mybucket/#imagethumb#","#perms#")>    

Ответы [ 2 ]

0 голосов
/ 20 декабря 2017

Объект this в application.cfc является компонентом application, а this на странице ColdFusion является просто структурной переменной. Поместите <cfdump var=#this#> в обоих местах, application.cfc и yourfile.cfm, чтобы увидеть разницу.

0 голосов
/ 05 февраля 2012

Просто понял, что я не добавил свое решение к этому, так что вот оно: папка, в которой находился «нерабочий» код, имела свой собственный Application.cfc, который не включал элементы S3 в код размещен выше. «Рабочий» код имел это в соответствующем Application.cfc.

Не совсем уверен, почему это должно быть в Application.cfc, когда он был на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...