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

https://s3-signed-test.s3.ap-south-1.amazonaws.com/file.mp4?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIVUO7AT4W4MCPDIA%2F20180402%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20180402T112848Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Signature=d6b877f9bba5dd2221381f10017c8659fe42342d81f7af940d8693478679a8fc

(2) S3 Прямой объект URL-

https://s3.ap-south-1.amazonaws.com/s3-signed-test/file.mp4

Моя проблема в том, что я не могу получить доступ к видео, которое я загрузил с предварительно записанным URL-адресом в корзину s3, разрешение корзины является общедоступным и доступно для всех источников.

Пожалуйста, дайте мне знать, кто-то, кто имеет решение для этого.

0 ответов

Другие вопросы по тегам