2016-12-13 2 views
2

AWS C++ SDK 및 Aws :: Transfer :: TransferManager를 사용하여 S3에서 메모리로 파일을 다운로드하려고합니다.AWS S3 C++ SDK TransferManager DownloadFile 콜백 사용 방법

내가 사용하고자하는 기능은 다음과 같습니다

std::shared_ptr<TransferHandle> DownloadFile (const Aws::String &bucketName, const Aws::String &keyName, CreateDownloadStreamCallback writeToStreamfn) 

그러나 나는 CreateDownloadStreamCallback 인수가 작동하도록되어 방법을 모르겠어요.

CreateDownloadStreamCallback 내가 만들고 AWS :: IOStream을 반환하려면이 콜백 함수로 이동해야하는지 확실하지 않다

std::function<Aws::IOStream*(void)> 

의 형식 정의입니다.

이 콜백 함수는 어떻게 작동합니까?

답변

1

콜백 함수의 목적은 요청이 성공할 때까지 스트림 생성을 지연시키는 것입니다. 요청이 실패하면 함수는 결코 호출되지 않습니다.

그것은 당신의 경우에 당신은 같은 것을 할 수 있도록 람다를 통해 이렇게 간단합니다 : 당신이 파일을 다운로드하고 싶었다면

auto creationFunction = [](){ return Aws::New<Aws::StringStream>("DownloadTag"); }; 
auto transferHandle = transferClient.DownloadFile("MyBucket", "MyKey", creationFunction); 

, 당신은 같은에 생성 기능을 전환 할 것을 :

성공적인 요청시 작성 기능이 호출되고 요청 본문이 작성된 것으로 스트리밍됩니다. 스트림의 플래그를 조심해야합니다. 일반적인 오류는 텍스트를 이진 스트림에 넣거나 그 반대의 경우입니다.

관련 문제