2011-07-05 4 views
0

폴더를 생성하기 위해 unsigned s3 클래스를 사용하려고합니다. 내 amazon s3 계정에 폴더 하나만 만들 수 있지만 팔로우 할 수 있습니다.아마존 s3 클래스, 지정되지 않은 생성 폴더

나는 이것을 할 수있다.

$file = "license.txt"; 
if ($s3->putObjectFile($file, $_POST['bucket'], $_POST['folder']."/", S3::ACL_PUBLIC_READ)) { 
     echo "File uploaded."; 
} else { 
     echo "Failed to upload file."; 
} 
내 양동이에 폴더를 만들 것입니다하지만 난 루프를 실행할 때 폴더

어떤 제안을 이유로 참조하지 않는

???

답변

2

S3에는 실제로 폴더가 없습니다.

각 버킷에는 키/파일 이름에 의해 참조되는 파일 만 포함됩니다. 이 파일 이름에 /이 있으면 각 / 앞에있는 텍스트는 폴더로 간주되며 많은 GUI 도구가이를 사용하여 폴더 계층 구조를 표시한다는 규칙이 있습니다.

예 : folder1/folder2/file.txt 이름의 파일은 folder1 및 하위 폴더 folder2에 2 단계 깊이로 표시됩니다.

Amazon에서는 delimiterprefix 매개 변수를 사용하여 가상 폴더를 쉽게 검색 할 수 있습니다. http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTBucketGET.html

1

S3는 일반적으로 생각하는 방식대로 디렉토리를 지원하지 않지만 흥미있는 대안을 지원합니다.

내용이 없거나 (0 바이트) 객체를 가져오고 키 (이름)가 "/"로 끝나고 "content-type"이 "binary/octet-stream"으로 끝나면 처리됩니다 S3로 디렉토리 (폴더).

명심하십시오. 그것은 여전히 ​​파일입니다. 그러나 콘솔은이를 디렉토리 (폴더)로 취급 할 것이고 많은 SDK 클라이언트는이를 디렉토리 (폴더)로 취급 할 것입니다.

0 바이트를 얻으려면 "license.txt"대신 "/ dev/null"파일을 사용하면됩니다.

디렉터리의 이름을 바꾸거나 복사하거나 삭제하려면 해당 키 접두사가있는 모든 항목을 검색해야합니다 (디렉터리 개체와 그 디렉터리 경로가있는 다른 개체를 키 접두사로 사용) - 새 접두사가있는 오브젝트에 해당 오브젝트를 복사해야합니다 (이름 바꾸기/삭제의 경우 이전 접 두부를 삭제해야합니다).

관련 문제