我正在尝试弄清楚如何从下载的url获取实际文件名。这是下载URL。请注意,此网址是直接的,没有重定向。
http://xyzjsjwekeke.com/download/314543&r=515
当我点击这个网址时,文件开始下载,其名称与
非常不同 how_to_prepare_for_interview.pdf
但是在下载网址中,这不是那样的。
我尝试了基础文本,但是在给出了网址斜线后,它将输出作为最后一个单词
$filename = array_shift(explode('?', basename($url)));
echo $filename;
答案 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);