0

据我所知,网址是指向资源的直接链接。我有使用 Apache 和 PHP 的经验,并且我知道使用 .htaccess 文件,可以为不需要提供结束文件名的位置设置默认文件(如 index.php)。

但是对于文件链接,需要提供直接链接,文件名和扩展名如somedomain.com/file.txt. 但最近我发现一些链接,尤其是下载链接,没有带有文件名和扩展名的 url。

例如,我试图为这个 youtube 视频 www.youtube.com/watch?v=W1-L58y2uf4 获取分辨率为 1080p HD 的直接 .mp4 文件 url。然后我得到了一个网址(使用clipconverter.cc),例如;

http://r9---sn-25g7sne7.c.youtube.com/videoplayback?source=youtube& ip=2001:41d0:8:1f2b:3a0e:6049:6b4f:92 e9&expire=1378905654& sparams=cp,id,ip,ipbits,itag,ratebypass,sou rce,upn,expire&ipbits=48& upn= BgsjQ8lS424& cp=U0hWTVlLU19KTkNONl9RRVdHOkZIZ0 diYTFXLWRJ&key=yt1& id=5b5f8be7ccb6b9fe&mt=1378881529& ratebypass=yes&itag=37&sver=3& mv=m&fexp=903309,919391,910207,91 4071,916612,924606,929117,929121,92 9906,929907,929922,929127,929129 ,92 9131,929930,936403,925726,936310,92 5720,925722,925718,925714,929917,90 6945,929933,920302,906842,913428,92 0605,919811,913563,919373,930803,90 8536,938701, 931924,936308,909549,90 0816,912711,904494,904497,939903,90 0375,900382,934507,907231,936312,90 6001&ms=au& signature=1DDD3BB4A46816E27075ADF1 3C84B810AD1DF72D.C9B4290CE7F0806A 3174E65DE3920F3AFDB06833&标题=乞力马扎罗+-+ROBOT+%282010%29 +%2AHD%2A+1080p+%2ABluRay%2A+ 音乐+视频

浏览器完美下载文件。这是如何工作的?此链接中的文件名和扩展名在哪里?

4

2 回答 2

1

请重复:

URL !== 文件
URL !== 文件
URL !== 文件

请求URL,您的浏览器/HTTP 客户端/任何向 Web 服务器发送 HTTP 请求,请求 URL。Web 服务器可以随意以任何方式响应此请求。URL 与硬盘上的文件毫无关系。这只是一个方便的默认配置,Web 服务器会查找与请求的 URL 同名的文件并提供这些文件。但它也可以做任何它想做的事情。它可以启动一个 shell 脚本,获取作为参数传递的请求的 URL,进而可以输出它想要的任何内容。Web 服务器可能是一个 Java 应用程序,它在内部处理所请求的 URL 并以一些内容进行响应。服务器可以是任何东西,它可以通过做任何它想做的事情来响应。Web 服务器只是一个侦听端口 80(或其他地方)并响应传入 HTTP 请求的应用程序。文件系统根本不需要参与。

于 2013-09-13T11:57:15.307 回答
0

您可能正在调用一个脚本,该脚本根据您的参数找到您想要的文件,在发送之前,它会修改标题以使您的浏览器将文件视为视频文件(并下载)而不是常规的 html 文档

header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
于 2013-09-13T11:54:05.897 回答