如何将 ContentType 添加到 AWS PHP SDK MultiPartUploader
How to add ContentType to AWS PHP SDK MultiPartUploader
我到处搜索如何将简单的 ContentType 元数据添加到 AWS PHP SDK 中的 MultiPartUploader。文档特别提到如何为 PutObject 执行此操作,但没有提及如何使用 MultiPartUploader 执行此操作。
我已经尝试了所有可以在网上找到的方法,但没有任何效果,而且我的文件总是设置为 application/octet-stream。
有没有人有这方面的经验?这是我的代码:
$uploader = new MultipartUploader($this->s3, $local_path, [
'bucket' => env('AWS_BUCKET'),
'key' => $path .'/'. $filename,
'contentType' => 'video/mp4', // have tried this
'metaData' => [ // have tried this (all well as all variations of caps)
'contentType' => 'video/mp4',
]
]);
do
{
try
{
$result = $uploader->upload();
}
catch (MultipartUploadException $e)
{
$uploader = new MultipartUploader($this->s3, $local_path, [
'state' => $e->getState(),
]);
}
}
while (!isset($result));
阅读完 MultiPartUploader class 后,似乎应该自动设置 ContentType,但并未设置。
我正在使用v3 of the SDK
如有任何建议,我们将不胜感激!
我 post 回答了这个问题后就想通了!我会 post 回答,这样如果其他人遇到这个问题,他们可以看这里。
我在问题中链接的页面有答案,只是与 ContentType 没有特别相关!
这是工作代码:
$uploader = new \Aws\S3\MultipartUploader($this->s3, $local_path, [
'bucket' => env('AWS_BUCKET'),
'key' => $path .'/'. $filename,
'before_initiate' => function(\Aws\Command $command) use ($mime_type) // HERE IS THE RELEVANT CODE
{
$command['ContentType'] = $mime_type; // video/mp4
}
]);
do
{
try
{
$result = $uploader->upload();
}
catch (\Aws\Exception\MultipartUploadException $e)
{
$uploader = new \Aws\S3\MultipartUploader($this->s3, $local_path, [
'state' => $e->getState(),
]);
}
}
while (!isset($result));
return $result ? $result['ObjectURL'] : null;
我希望这对以后的其他人有所帮助!
我到处搜索如何将简单的 ContentType 元数据添加到 AWS PHP SDK 中的 MultiPartUploader。文档特别提到如何为 PutObject 执行此操作,但没有提及如何使用 MultiPartUploader 执行此操作。
我已经尝试了所有可以在网上找到的方法,但没有任何效果,而且我的文件总是设置为 application/octet-stream。
有没有人有这方面的经验?这是我的代码:
$uploader = new MultipartUploader($this->s3, $local_path, [
'bucket' => env('AWS_BUCKET'),
'key' => $path .'/'. $filename,
'contentType' => 'video/mp4', // have tried this
'metaData' => [ // have tried this (all well as all variations of caps)
'contentType' => 'video/mp4',
]
]);
do
{
try
{
$result = $uploader->upload();
}
catch (MultipartUploadException $e)
{
$uploader = new MultipartUploader($this->s3, $local_path, [
'state' => $e->getState(),
]);
}
}
while (!isset($result));
阅读完 MultiPartUploader class 后,似乎应该自动设置 ContentType,但并未设置。
我正在使用v3 of the SDK
如有任何建议,我们将不胜感激!
我 post 回答了这个问题后就想通了!我会 post 回答,这样如果其他人遇到这个问题,他们可以看这里。
我在问题中链接的页面有答案,只是与 ContentType 没有特别相关!
这是工作代码:
$uploader = new \Aws\S3\MultipartUploader($this->s3, $local_path, [
'bucket' => env('AWS_BUCKET'),
'key' => $path .'/'. $filename,
'before_initiate' => function(\Aws\Command $command) use ($mime_type) // HERE IS THE RELEVANT CODE
{
$command['ContentType'] = $mime_type; // video/mp4
}
]);
do
{
try
{
$result = $uploader->upload();
}
catch (\Aws\Exception\MultipartUploadException $e)
{
$uploader = new \Aws\S3\MultipartUploader($this->s3, $local_path, [
'state' => $e->getState(),
]);
}
}
while (!isset($result));
return $result ? $result['ObjectURL'] : null;
我希望这对以后的其他人有所帮助!