当我从AWS Glacier下载时,如何找到文件的扩展名?



我在AWS Glacier上存档了很多视频文件。他们中的大多数人都有"。mp4"。格式,我如何获得存储在存档中的文件的扩展名?

我使用php-aws-sdk和Laravel。我试图删除硬编码的"。mp4",它返回给我一个"流"当我试图获取"$result->get('body')"时,我在该对象中没有看到任何带文件扩展名的字段。

$result = $this->client->getJobOutput([
'accountId' => config('aws.account_id'),
'jobId' => $job_id,
'vaultName' => config('aws.vault_name'),
]);
$video_file_name = '/tmp/' . $archive_name . '.mp4'; 
$video_file_path = public_path($video_file_name);
$fp = fopen($video_file_path, "w");
fwrite($fp, $video_source_stream);
fclose($fp);

这是相反的,我的意思是如何得到一个扩展当我要从冰川下载一个文件,我的服务器上还没有那个文件。

冰川给我的回报是:

GuzzleHttp Psr7 流^ {# 1155-stream:流资源{@722wrapper_type:"PHP"stream_type:"TEMP"模式:"w + b"unread_bytes: 0seekable:真uri:"php://temp"选择:[]}:零-seekable:真读:真可写:真uri:"php://temp"-customMetadata: []}

我可以使用流对象的->get('body')并将其保存到文件中。但如何找到我要创建的文件的扩展名呢?

$fp = fopen('/tmp/' . $archive_name . '.mp4', "w");
fwrite($fp, $result->get('body'));
fclose($fp);

你可以使用

$extension = $file->getClientOriginalExtension();
$extension = pathinfo(storage_path('/uploads/my_image.jpg'), PATHINFO_EXTENSION);dd($extension);
//Where $file is an instance of IlluminateHttpUploadFile
$extension = $file->getClientOriginalExtension();

最新更新