我有一个让我发疯的问题。
我正在尝试通过从外部源发送给我的参数从远程服务器下载文件,并将其保存到我服务器上的特定目录中。
以下是代码:
// value of this variable is something like http://api.com/20110720-202122_dceb89c3-a468-4de8-a37f-4f594bc5aab8.mp3
$recordingURL = $_REQUEST['RecordingURL'];
$filename = basename($recordingURL);
$path = '../mp3/TT/'.$filename;
if(!file_exists($path))
{
if (!mkdir($path,'0755', true))
{
errorLog('handlemp3.php','0','could not make recording directory');
}
}
$fp = fopen($path, 'w');
$ch = curl_init($recordingURL);
curl_setopt($ch, CURLOPT_FILE, $fp);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);
起初我看到“TT”目录没有被创建,我意识到问题是我没有将mkdir中的递归属性设置为true。一旦我这样做,我就看到了在服务器上创建的TT目录。奇怪的是,现在我没有看到在服务器上创建的MP#。
任何人都知道为什么?我做了一个“$ error = error_get_last()”没有它,看到我得到一个错误,如“指令\'register_long_arrays \'在PHP 5.3及更高版本中被弃用”但我不知道是什么可以抛出该错误。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
试试这个:
file_put_contents('/path/to/local/file', file_get_contents('http://site.com/remote/file'));
答案 1 :(得分:0)
我不确定这是对的:
curl_setopt($ch, CURLOPT_FILE, $fp);
如果我错了,请纠正我,但我认为您上传了$fp
的内容,而不是将$ch
的内容下载到$fp
。
删除以下行:
$fp = fopen($path, 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
fclose($fp);
并将其放在最后(所以curl_close
下方):
file_put_contents($path, $data);
答案 2 :(得分:0)
就像白痴一样,这就是我做错了:1)作为字符串传递权限而不是整数2)在mkdir中包含文件名,因此文件名在文件夹中但设置为目录3)在fopen中没有包含文件名