2010-05-12 3 views
1

Flex에로드해야하는 S3의 보안 이미지가 있습니다. 서명 된 임시 URL을 사용하여이 작업을 수행 할 수 있기를 기대했지만 작동하지 못했습니다. 내 브라우저의 주소 표시 줄에 제대로로드되기 때문에 내가 생성하는 URL이 정확하다는 것을 알고 있습니다. 더욱이, Flex는 공개되지 않았을 때 서명되지 않은 URL로 이미지를로드하는 데 아무런 문제가 없습니다.하지만 공개 여부와 상관없이 모든 이미지가 실패하면 URL에 서명하면됩니다.임시/서명 된 URL로 Flex에 Amazon S3 이미지로드

image.source = signedURL, image.load (signedURL) 등을 시도했습니다. URLLoader/URLStream을 사용하여 파일을로드하려고하면 데이터가 제대로 표시되는 것처럼 보입니다.하지만 그렇지 않습니다. 그 결과를 Image 컨트롤로 변환하는 방법.

Image 컨트롤이 서명 된 URL을 인식하지 못하는 문제입니까? 바이트 배열에서 이미지를로드해야합니까? 그게 어떻게 생겼어?

+0

http://www.charlesproxy.com/ 또는 http://www.fiddler2.com/fiddler2/와 같은 HTTP 디버깅 프록시를 사용하면 브라우저에서 파일을로드 할 때와 Flex에서 요청할 때의 다른 점을 확인할 수 있습니다. –

+0

샘 - 나의 게으름을 불러 주셔서 고맙습니다. 찰스와 함께 디버깅을 했어야했는데, 플렉스 이미지 컨트롤이 URL을 사전 처리하는 방법에 문제가 있습니다. ... 모두 대기 중이며 수정 사항을 게시 할 것입니다. 몇 개 – Yarin

답변

1

이것은 Flex의 mx.Image 컨트롤에서 문제가되는 것으로 밝혀졌습니다. url을 소스로 지정하면 이미 인코딩 한 경우 서명을 망칠 수있는 url의 일부 내부 디코딩/인코딩을 수행합니다 .

예를 들어, 우리는이 URL이 작동

url = "http://" + AMAZON_ENDPOINT + "/" + escape(bucketName) + "/" + escape(objectName) + "?AWSAccessKeyId="+this.accessKey+"&Expires="+s+"&Signature="+encodeURIComponent(authString); 

(as3awss3lib에서 촬영)이 같은 임시 서명 URL을 만들지 만, 그것을 할당 할 때 (기본에 SWFLoader가 OSToPlayerURI라는 내부 기능을 가지고 Image.source하기 url).

(참고 : authString을 인코딩없이 임시 URL을 만들기가 이미 그것을 시도, 생성 된 서명의 characters-에 따라 시간의 절반을 실패 의미)

는이 견고한 (내가 생각하는) 수정이, 그것은 서명 된 URL을 사용하여 URLStream을 사용하여 이미지를 바이트 배열에로드 한 다음 ByteArray를 mx.Image 소스로 할당하는 것입니다.

나는이 캡슐화 클래스 만든이 누군가를하는 데 도움이 S3Image.as

희망, 아래로 고정하는 까다로운 문제이고 지금까지 내가 말할 수있는 문서화.