2012-02-02 3 views
3

이것은 이상한 것입니다. 2 페이지에 '사실상'동일한 코드가 있지만, 다른 페이지에서는 작동하지 않습니다. 엄청난 도움이되지 않는 오류 메시지 "S3 오류 메시지." 내가 잘못하고있는 곳에서 어떤 빛도 비추 지 못한다.아마존 S3에 대한 ColdFusion ImageWrite

아래 코드는 두 페이지의 내용이 동일합니다. 두 페이지의 유일한 차이점은 imgLink가 생성되는 방식입니다. 작업 페이지에서는 단일 소스 (XML 피드) 및 cfset에서 가져옵니다. 작동하지 않는 페이지에서 imgLink는 처음에 'none'으로 설정되고 여러 소스가 발견 될 때까지 여러 소스가 검사됩니다. 동일한 방법으로 여전히 cfset이며 처리하기 전에 cfif를 사용합니다. 그러나, 원본 소스를 하드 코딩 (즉, 일반적으로 imgLink cfset에있는 값을 붙여 넣기)하려고 시도했지만 여전히 실패합니다.

저는 이것을 성공하지 못한 채 마지막 날에 생각할 수있는 모든면에서 디버깅했습니다. 그래서, 나는 포인터가 다른 것을 봐야만 실패 할 수있는 포인터를 찾고 있다고 생각합니다. 반환

전체 오류입니다 - 파일 작업을 수행 할 때 오류가 발생

이 파일 S3에 작성 : //mybucket/1577-67BC4EF7-1B21-866F-32E95DF67F3336C6-f.jpg합니다. ". S3 오류 메시지"..

코드를 알 수없는 메시지 그리고 내 코드입니다 : org.apache.commons.vfs.FileSystemException :이 예외의 원인이었다

<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#")>  
+0

파일이나 특정 이미지에서만 이러한 현상이 발생합니까? 문제를 분리하려고합니다. 예를 들어 먼저 디스크에 이미지를 쓰거나 (또는 ​​RAM fs가 좋을 때) 파일을 버킷에 복사합니다. – Sergii

+0

@Sergii - 모든 파일이 포함되어 있습니다. 그러나, 나는 문제가있는 곳을 알아 냈습니다. 'none working'버전의 파일은 자신의 Application.cfc 인 폴더에 있습니다. 나는 분명히 내 자신의 질문에 대답 할 수는 없지만, 나중에 찾으려는 다른 사람들의 이익을 위해 나중에 일어난 일에 대한 자세한 내용을 게시 할 것입니다. – Lee

답변

0

그냥 내가 지금 여기가 '비 작업'코드에 있었다가 포함되지 않은 자신의 Application.cfc를의 가지고있는 폴더는 - 이것도이 내 용액을 첨가하지 않았 실현 위에 게시 된 코드의 S3 요소 'working'코드는 해당 Application.cfc에 있습니다. 그게 application.cfc의 this 객체는 ColdFusion 페이지에 application 구성 요소 및 this

0

에있을 때 Application.cfc에 있어야했다 왜

확신 다만 구조 변수입니다. 차이점을 확인하려면 <cfdump var=#this#>을 두 위치 application.cfc와 yourfile.cfm에 넣으십시오.

관련 문제