Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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 是否保存文件并重命名?_Php_Curl - Fatal编程技术网

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解析查询,我将无法卷曲文件,因为我将丢失访问令牌。我会再打给你的。