2016-12-13 10 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)> 

のtypedefです。

このコールバック関数はどのように動作するはずですか?

答えて

1

コールバック関数の目的は、要求が成功した後までストリームの作成を遅延させることです。要求が失敗した場合、関数は決して呼び出されません。

あなたが何かするかもしれないあなたの場合のように、それは、ラムダを経由してこれを行うには簡単です:あなたは、ファイルにダウンロードしたい場合は、あなたのような何かに作成機能を切り替えたい

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

を:

要求が成功すると、作成機能が呼び出され、要求本体が作成されたものにストリーミングされます。あなたはストリーム上のiosフラグに注意する必要があります。一般的なエラーは、テキストをバイナリストリームに入れたり、その逆にすることです。

関連する問題