Php 是否保存文件并重命名?
我正在下载一个文件并将其从另一台服务器保存到我的服务器,但我正在下载的文件附带有访问令牌Php 是否保存文件并重命名?,php,curl,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.zqP
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.zqpa3c57hfdkeamkg3xr2(带令牌),而不是video.mp4,这意味着我以后不能对它做任何事情,因为它不是.mp4
这里的解决方案是什么?我试过了
rename(video.mp4?versionId=c_.Qeh.dz.zqPA3zc57HFDKEAmKG3xr2, video.mp4)
但是它需要文件名,而访问令牌阻止了这一点。尝试使用
parse\u url
而不是basename
或将它们组合起来。从parse_url
(不带GET参数)获取路径,然后使用basename
函数
试试
basename(parse_url($url,PHP_url_PATH))
谢谢,我担心如果我从url解析查询,我将无法卷曲文件,因为我将丢失访问令牌。我会再打给你的。