cURL保存文件并重命名?

时间:2013-06-22 17:51:00

标签: php curl

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

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) 

但它需要文件名,访问令牌正在阻止它。

2 个答案:

答案 0 :(得分:0)

尝试使用parse_url代替basename或合并它们。从parse_url(没有GET参数)获取路径,然后使用basename函数。

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

答案 1 :(得分:0)

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