如何通过 file_get_contents 获取文件扩展名

Posted

技术标签:

【中文标题】如何通过 file_get_contents 获取文件扩展名【英文标题】:How to get file extension by file_get_contents 【发布时间】:2016-11-27 03:25:12 【问题描述】:

我想从 url 上传一个视频文件到我的服务器。这是我的代码。

<?php
    set_time_limit(0);
    $file_name = "upload/myvideo.mp4";
    $video_file_url = "http://example.com/somevideo.mp4";
    file_put_contents($file_name, file_get_contents($video_file_url));
?>

现在的问题是 $video_file_url 包含不同类型的视频,例如 .mp4、.3gp 或 .flv 。我不知道如何从 file_get_contents 获取文件扩展名,并且 $file_name 总是可能与我在代码中提到的不同。

我应该用 tmpFile.tmp 名称保存这个文件,当从其他服务器复制时,只需用有效的名称和扩展名重命名它?

【问题讨论】:

【参考方案1】:

pathinfo() 和 parse_url() 是获取扩展所需要的。

$extension = pathinfo(parse_url($video_file_url, PHP_URL_PATH), PATHINFO_EXTENSION);

顺便说一句,对于您用于下载文件的部分代码,我建议您看看这个问题,因为 file_get_contents() 在这种情况下效率极低:Download File to server from URL

【讨论】:

你是对的,但对我的纯 url 格式感到抱歉,其中 url 包含扩展名。当 url 包含文件扩展名时很有用。

以上是关于如何通过 file_get_contents 获取文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 HTTPS 获取 file_get_contents 或 cURL

fopen() file_get_contents() 通过url获取链接内容

如何使用 file_get_contents 在 PHP 中发布数据?

如果发生重定向,如何在 file_get_contents 之后获取真实的 URL?

file_get_contents 通过 php 失败,通过浏览器工作

php如何获取文件内容?