I want to upload a file from an external URL directly to an Amazon S3 bucket using the PHP SDK. I managed to do this with the following code:
$s3 = new AmazonS3(); $response = $s3->create_object($bucket, $destination, array( 'fileUpload' => $source, 'length' => remote_filesize($source), 'contentType' => 'image/jpeg' ));
If the remote_filesize function is as follows:
function remote_filesize($url) { ob_start(); $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); $ok = curl_exec($ch); curl_close($ch); $head = ob_get_contents(); ob_end_clean(); $regex = '/Content-Length:\s([0-9].+?)\s/'; $count = preg_match($regex, $head, $matches); return isset($matches[1]) ? $matches[1] : "unknown"; }
However, it would be nice if I could skip the file size setting when uploading to Amazon, as this would save me from traveling to my own server. But if I remove the setting of the length property in the $ s3-> create_object function, I get the error message "Stream size for streaming download cannot be determined." Any ideas how to solve this problem?
Bjorn source share