PHP SDK를 사용하여 외부 URL의 파일을 Amazon S3 버킷에 직접 업로드하려고합니다. 함수 remote_filesize가 다음 인 경우PHP SDK를 사용하여 외부 파일을 AWS S3 버킷에 업로드
$s3 = new AmazonS3();
$response = $s3->create_object($bucket, $destination, array(
'fileUpload' => $source,
'length' => remote_filesize($source),
'contentType' => 'image/jpeg'
));
: 그러나
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";
}
난 이후 아마존에 업로드 할 때 파일 크기 설정을 건너 뛸 수 있다면 좋을 텐데, 나는 다음과 같은 코드를 사용하여이 작업을 수행하기 위해 관리 이것은 나 자신의 서버에 대한 여행을 절약 할 수있다. 그러나 $ s3-> create_object 함수에서 'length'속성 설정을 제거하면 '스트리밍 업로드의 스트림 크기를 결정할 수 없습니다.'라는 오류 메시지가 나타납니다. 어떤 아이디어이 문제를 해결하는 방법?
원격 서버/호스트를 제어 할 권한이 없습니다. 이미 제안 된 방법을 시도했지만 헤더를 요청했지만 프로세스가 상당히 느려졌습니다. 버킷과 동일한 가용성 영역에서 내 서버를 Amazon으로 이동하기로 결정 했으므로 속도가 향상되었습니다. – Bjorn