AWS S3 положить объект (видео) с предварительно подписанным URL, не работает?
Я загружаю видео на S3 Bucket через PHP S3 API с предварительно подписанным URL. Видео mp4 успешно загружено на S3, но оно не потоковое и не выдает никаких ошибок.
Вот подробности.
Мой PHP-файл для создания предварительно подписанного URL для метода S3 putObject.
require 'aws/aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
$s3Client = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'ap-south-1',
'credentials' => [
'key' => 'XXXXXXX',
'secret' => 'XXXXXXX'
]
]);
/*echo '<pre>';
print_r($_FILES);die;*/
if(!$_FILES['file']['tmp_name'] || $_FILES['file']['tmp_name']==''){
echo json_encode(array('status'=>'false','message'=>'file path is required!'));die;
}else{
$SourceFile =$_FILES['file']['tmp_name'];
$key=$_FILES['file']['name'];
$size=$_FILES['file']['size'];
}
try {
$cmd = $s3Client->getCommand('putObject', [
'Bucket' => 's3-signed-test',
'Key' => $key,
'SourceFile' => $SourceFile,
'debug' => false,
'ACL' => 'public-read-write',
'ContentType' => 'video/mp4',
'CacheControl'=>'no-cache',
'ContentLength'=>$size
]);
$request = $s3Client->createPresignedRequest($cmd, '+120 minutes');
// Get the actual presigned-url
$presignedUrl = (string) $request->getUri();
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";die;
}
echo json_encode(array('status'=>'true','signedUrl'=>$presignedUrl));die;
Этот код работает нормально и загружает видео MP4 на S3 Bucket.
Но после загрузки, когда я собираюсь получить доступ к этому видео, оно не работает, я пробовал также с предварительно записанным URL-адресом getObject, но он не работает.
Вот URL-адреса объекта S3-
(1) Предварительно подписанный URL getObject
(2) S3 Прямой объект URL-
https://s3.ap-south-1.amazonaws.com/s3-signed-test/file.mp4
Моя проблема в том, что я не могу получить доступ к видео, которое я загрузил с предварительно записанным URL-адресом в корзину s3, разрешение корзины является общедоступным и доступно для всех источников.
Пожалуйста, дайте мне знать, кто-то, кто имеет решение для этого.