Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提取下载的url文件名_Php_Http - Fatal编程技术网

Php 提取下载的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

我正在试图找出如何从下载的url获取实际文件名。这是下载url。请注意,此url是直接的,没有重定向

  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头中获取。使用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);

你到底想在这里实现什么-你想知道在向浏览器发送下载时如何设置文件名吗?@Pekka我想提取实际文件名,以便将该名称存储在我的数据库中,但像314543&r=515这样的文件名没有用。在上述情况下,我想存储实际文件名如何为面试做准备。pdf@Payal马尔霍特拉:如果你想这样做,我想知道是什么让你选择了
basename
explode
array\u shift
?出于好意,我无法想象这有什么意义。你知道这些函数是用来做什么的吗?@hakre是的,它会告诉我这个函数的姓url@PayalMalhotra
basename
只是一个字符串操作函数。它将无法访问URL,因此它无法将您未输入的任何内容作为输出提供给您。请不要在网站上增加新的帮助吸血鬼。如果你认为这就是问题所在,你可以留下一个重复的链接,但是即使这样也可能会给巨魔带来麻烦。@baba没有输出,什么都没有coming@PayalMalhotra回显时请注意
$file**N**ame
的大小写。您的原始代码与此答案不同。@Boann yeah首先犯了相同的错误,但之后更正了,但没有output@PayalMalhotra很抱歉这是我能做的最好的。。。。请参阅了解哈克雷评论中帮助吸血鬼的含义