我正在使用带有预签名网址的PHP S3 API在S3存储桶上传视频。 mp4视频已成功上传到S3,但它没有流式传输 并没有给出任何错误。
以下是详细信息。
我的PHP文件为S3 putObject方法创建预先烧录的URL。
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;
此代码工作正常,并在s3存储桶上传视频mp4。
但上传后,当我要访问该视频时,它无效 我也试过过getObject pre-singed url但它没有用。
以下是S3对象网址 -
(1)getObject pre-singedged URL
(2)S3 Direct对象URL -
https://s3.ap-south-1.amazonaws.com/s3-signed-test/file.mp4
我的问题是我无法访问我在s3存储桶上使用预先登录的网址上传的视频,存储桶权限是公开的,并且可以访问所有来源。
请让我知道,有解决方案的人。