Revision: 48479
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 2, 2011 09:03 by mpiccinato
Initial Code
public function batchUploadS3($files, $bucket, $bucketPath = '')
{
// Now we should push these off to S3
// Include the SDK
require_once(APPPATH . "/libraries/amazon_sdk/sdk.class.php");
$s3 = new \AmazonS3();
// Prepare to hold the individual filenames
$individual_filenames = array();
// Loop over the list, referring to a single file at a time
foreach ($files as $id=>$file)
{
// Grab only the filename part of the path
$fileParts = pathinfo($file);
$filename = $bucketPath.'/'.$fileParts['basename'];
// Store the filename for later use
$individual_filenames[$id] = $filename;
/* Prepare to upload the file to our new S3 bucket. Add this
request to a queue that we won't execute quite yet. */
$s3->batch()->create_object($bucket, $filename, array(
'fileUpload' => $file,
'acl' => AmazonS3::ACL_PUBLIC
));
}
/* Execute our queue of batched requests. This may take a few seconds to a
few minutes depending on the size of the files and how fast your upload
speeds are. */
$file_upload_response = $s3->batch()->send();
/* Since a batch of requests will return multiple responses, let's
make sure they ALL came back successfully using `areOK()` (singular
responses use `isOK()`). */
if ($file_upload_response->areOK())
{
// Loop through the individual filenames
foreach ($individual_filenames as $id=>$filename)
{
/* Display a URL for each of the files we uploaded. Since uploads default to
private (you can choose to override this setting when uploading), we'll
pre-authenticate the file URL for the next 5 minutes. */
$files[$id] = $s3->get_object_url($bucket, $filename);
}
}else{
error_log("batchUploadS3 failed");
}
return $files;
}
Initial URL
Initial Description
Initial Title
Codeigniter and S3
Initial Tags
codeigniter
Initial Language
PHP