提取下载的url文件名

时间:2012-10-27 10:55:06

标签: php http

我正在尝试弄清楚如何从下载的url获取实际文件名。这是下载URL。请注意,此网址是直接的,没有重定向。

  http://xyzjsjwekeke.com/download/314543&r=515

当我点击这个网址时,文件开始下载,其名称与

非常不同
   how_to_prepare_for_interview.pdf

但是在下载网址中,这不是那样的。

我尝试了基础文本,但是在给出了网址斜线后,它将输出作为最后一个单词

 $filename = array_shift(explode('?', basename($url)));
 echo $filename;

1 个答案:

答案 0 :(得分:1)

无法从首先没有文件名的网址获取文件名。

从您的网址

http://xyzjsjwekeke.com/download/314543&r=515
                                           ^----- Probably ID to the file 

它可能需要来自网址的ID并从存储系统获取真实内容,例如。 MySQL,CDN等发送通过以下方式发送回来:

header('Content-disposition: attachment; filename='.$realName);

获取此类文件名的方法直接来自HTTP标头。使用标题get_headers获取标题信息并提取文件名

示例

$headers = get_headers("http://xyzjsjwekeke.com/download/314543&r=515p",true);
$headers = array_combine(array_map("strtolower",array_keys($headers)),$headers);


$fileName = isset($headers['content-disposition']) ? strstr($headers['content-disposition'], "=") : null ;
$fileName = trim($fileName,"=\"'");

var_dump($fileName);