Php 提取下载的url文件名
我正在试图找出如何从下载的url获取实际文件名。这是下载url。请注意,此url是直接的,没有重定向Php 提取下载的url文件名,php,http,Php,Http,我正在试图找出如何从下载的url获取实际文件名。这是下载url。请注意,此url是直接的,没有重定向 http://xyzjsjwekeke.com/download/314543&r=515 当我点击这个url的时候,一个文件开始下载,它的名字是非常不同的,比如 how_to_prepare_for_interview.pdf 但在下载url中,theere不是这样的 我尝试了base extraxt,但它在给定的url斜杠后给出了输出作为最后一个字 $filename
http://xyzjsjwekeke.com/download/314543&r=515
当我点击这个url的时候,一个文件开始下载,它的名字是非常不同的,比如
how_to_prepare_for_interview.pdf
但在下载url中,theere不是这样的
我尝试了base extraxt,但它在给定的url斜杠后给出了输出作为最后一个字
$filename = array_shift(explode('?', basename($url)));
echo $filename;
无法从一开始就没有文件名的url获取文件名 从您的URL
http://xyzjsjwekeke.com/download/314543&r=515
^----- Probably ID to the file
它可能从url获取ID,并从存储系统(如MySQL、CDN等)获取真实ID,然后通过以下方式发送回:
header('Content-disposition: attachment; filename='.$realName);
获取此类文件名的方法是直接从HTTP头中获取。使用Headersget_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);
你到底想在这里实现什么-你想知道在向浏览器发送下载时如何设置文件名吗?@Pekka我想提取实际文件名,以便将该名称存储在我的数据库中,但像314543&r=515这样的文件名没有用。在上述情况下,我想存储实际文件名如何为面试做准备。pdf@Payal马尔霍特拉:如果你想这样做,我想知道是什么让你选择了
basename
和explode
和array\u shift
?出于好意,我无法想象这有什么意义。你知道这些函数是用来做什么的吗?@hakre是的,它会告诉我这个函数的姓url@PayalMalhotrabasename
只是一个字符串操作函数。它将无法访问URL,因此它无法将您未输入的任何内容作为输出提供给您。请不要在网站上增加新的帮助吸血鬼。如果你认为这就是问题所在,你可以留下一个重复的链接,但是即使这样也可能会给巨魔带来麻烦。@baba没有输出,什么都没有coming@PayalMalhotra回显时请注意$file**N**ame
的大小写。您的原始代码与此答案不同。@Boann yeah首先犯了相同的错误,但之后更正了,但没有output@PayalMalhotra很抱歉这是我能做的最好的。。。。请参阅了解哈克雷评论中帮助吸血鬼的含义