這是一個奇怪的 - 我有'幾乎'相同的代碼在2頁上,它可以在一個,但不是另一個。令人難以置信的無用錯誤消息「S3錯誤消息」。並沒有說明我在哪裏出錯。ColdFusion ImageWrite到亞馬遜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#")>
這是否發生在任何文件或只是特定的圖像?我會嘗試隔離問題,例如首先在磁盤上寫入映像(或者更好地在ram fs中),然後將其作爲文件複製到存儲桶中。 – Sergii 2012-02-02 11:56:32
@Sergii - 它與所有文件。然而,我剛纔發現問題出在哪裏 - '沒有工作'版本的文件駐留在一個自己的Application.cfc文件夾中。我顯然還不能回答我自己的問題,但我會在後面詳細介紹發生的事情,爲將來尋找其他人的利益。 – Lee 2012-02-02 12:22:13