1

我正在从另一台服务器下载文件并将其保存到我的服务器,但我正在下载的文件附带访问令牌。

http://www.example.com/video.mp4?versionId=c_.Qeh.dz.zqPA3zc57HFDKEAmKG3xr2

加载以下内容会导致权限错误:

http://www.example.com/video.mp4

问题是,当我使用以下代码卷曲时:

$url = 'http://www.example.com/video.mp4?versionId=c_.Qeh.dz.zqPA3zc57HFDKEAmKG3xr2';
$fh = fopen(basename($url), "wb");
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_exec($ch);
curl_close($ch);

该文件另存为 video.mp4?versionId=c_.Qeh.dz.zqPA3zc57HFDKEAmKG3xr2(带有令牌)而不是 video.mp4,这意味着我不能对它做任何事,因为它不是 .mp4

这里有什么解决方案?我试过了

rename(video.mp4?versionId=c_.Qeh.dz.zqPA3zc57HFDKEAmKG3xr2, video.mp4) 

但它需要文件名,而访问令牌正在阻止这种情况。

4

2 回答 2

0

尝试使用它们parse_url来代替basename或组合它们。从(不带 GET 参数)获取路径parse_url,然后使用basename函数。

http://www.php.net/manual/en/function.parse-url.php

于 2013-06-22T17:57:53.117 回答
0

尝试basename( parse_url( $url, PHP_URL_PATH ) )

于 2013-06-22T18:29:10.440 回答