-1

我想弄清楚如何从下载的 url 中获取实际的文件名。这里是下载 url。请注意,这个 url 是直接的,没有重定向。

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

当我点击这个网址时,一个文件开始下载,其名称非常不同,例如

   how_to_prepare_for_interview.pdf

但在下载网址中没有这样的。

我尝试了base extraxt,但它在给出的url的斜线之后给出了输出作为最后一句话

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

1 回答 1

1

没有办法从最初没有文件名的 url 获取文件名。

从您的网址

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

它可能从 url 中获取 ID,并从存储系统中获取真实值,例如。MySQL、CDN 等)发送通过以下方式发回:

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

获取此类文件名的方法是直接从 HTTP 标头中获取。使用 Headers 获取头信息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);
于 2012-10-27T11:01:03.940 回答