C++ Upload to Amazon S3
Here’s an example of uploading a file via a POST to Amazon S3:
void TestPostAmazonS3Upload(void)
{
CkHttpRequest req;
CkHttp http;
bool success;
// Any string unlocks the component for the 1st 30-days.
success = http.UnlockComponent("Anything");
if (success != true) {
printf("%s\n",http.lastErrorText());
return;
}
req.SetFromUrl("http://something.s3.amazonaws.com/");
req.UseUpload();
req.AddParam("key","file1005.dat");
req.AddParam("AWSAccessKeyId","AA6SXJPBBBBGSZHEJ6ZZ");
req.AddParam("acl","private");
req.AddParam("success_action_redirect","http://www.something.com/blahblah.php");
req.AddParam("policy","abcdefhijmF0aW9uIjogIjIwMDktMTItMDFUMTI6MDA6MDAuMDAwWiIsImNvbmRpdGlvbnMiOiBbeyJidWNrZXQiOiAidHlwaG9vbmRyaXZlIn0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCIiXSx7ImFjbCI6ICJwcml2YXRlIn0seyJzdWNjZXNzX2FjdGlvbl9yZWRpcmVjdCI6ICJodHRwOi8vd3d3LnR5cGhvb250b29scy5jb20vdHlwaG9vbmRyaXZlc3RvcC5waHAifSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdXX0=");
req.AddParam("signature","abcdefwFQPpsAAAuCUY2m7g/kkw=");
req.AddParam("Content-Type","application/octet-stream");
// The file must be added last for Amazon S3
req.AddFileForUpload("file","payload.txt");
// Send the HTTP POST and get the response. Note: This is a blocking call.
// The method does not return until the full HTTP response is received.
const char * domain;
long port;
bool ssl;
domain = "something.s3.amazonaws.com";
port = 80;
ssl = false;
CkHttpResponse *resp = 0;
resp = http.SynchronousRequest(domain,port,ssl,req);
if (resp == 0 )
{
printf("%s\n",http.lastErrorText());
}
else
{
// An HTTP response status of 303 is normal and indicates success.
// By default, Amazon S3 will return an empty document with the status code of
// 200 when an object is successfully uploaded.
//
// Developers may choose to change this behavior by specifying a full
// URL within the redirect form field. If specified, on successful uploads,
// Amazon S3 will redirect users with a 303 to this URL...
// (see http://doc.s3.amazonaws.com/proposals/post.html )
printf("%s\n",http.lastErrorText());
// Display the HTML page returned.
printf("%s\n",resp->bodyStr());
delete resp;
}
}
admin
0
Tags :