2013-03-21 2 views
1

AWS SDK를 사용하여 파일 업로드/잡아 내기에 꽤 좋은 결과를 얻었지만 문제가 발생했습니다.AWS PHP SDK 버전 2 S3 파일 이름 인코딩 문제

urlescaped처럼 보이는 S3에 저장된 파일이 있습니다. "/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg"

지금까지 SDK는 우리가 던진 모든 파일 이름을 처리했습니다. 그러나 "doesObjectExist"를 시도 할 때도 해당 파일에 오류가 발생합니다.

$s3->doesObjectExist("mabucket","/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg")

은 항상 실패합니다. 로컬 저장소에서 해당 파일을 업로드하려고했는데 실패했습니다. 펑키 예외가 있습니다 : "우리가 계산 한 요청 서명이 당신이 제공 한 서명과 일치하지 않습니다. 당신의 키와 서명 방법을 확인하십시오."

"doesObjectExist"를 사용하기 전에 파일 이름을 인코딩해야하는 트릭이 있습니까? 모든 종류의 나쁜 파일 이름 (공백/utf-8 문자/& 등)을 이미 처리 한 것 같습니다. 그래서 이것이 작동하지 않는 이유가 혼란 스럽습니다.

업데이트 : PHP 2.2.1 용 최신 AWS SDK로 업그레이드. 버전 2.1.0에서 여러 버그가있는 것으로 보입니다. 당신이 우분투 10.04에 있다면, 이것은 약간 거친 것입니다. (PHP 버전 업그레이드에 대한 의견보기 : http://www.zalexblog.com/2011/01/07/installing-php-5-3-3-on-ubuntu-10-04/)

답변

0

html_entity_decode로 시도해 볼 수 있습니까?

$s3->doesObjectExist("mabucket",html_entity_decode("/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg")) 
+0

죄송합니다. php : html_entity_decode, rawurldecode, urldecode의 모든 디코딩을 시도했습니다. – Stech

+1

버킷 위치 일 수 있습니까? https://github.com/tpyo/amazon-s3-php-class/issues/28#issuecomment-5723770 –

+0

= $ 구성 어레이 ( '키'=> '는 AWS-키' '비밀 '=>'the-aws-secret ', '지역 '=> 지역 :: US_EAST_1 ); 기본적으로 처음 시작되었지만 한 번 쐈습니다. 그래도 작동이 안되는. – Stech