使用cURL的PHP远程文件上传

使用cURL的PHP远程文件上传,php,curl,Php,Curl,我有一段PHP代码,它发布了一个要上传到远程服务器的文件: $filename = $at[attachment]; $handle = fopen($filename, "r"); $data = fread($handle, filesize($filename)); $POST_DATA = array( 'file' => base64_encode($data), 'location' => 'billing/voip_daily_cdr_files'

我有一段PHP代码,它发布了一个要上传到远程服务器的文件:

$filename  = $at[attachment];
$handle    = fopen($filename, "r");
$data      = fread($handle, filesize($filename));
$POST_DATA = array(
'file' => base64_encode($data), 
'location' => 'billing/voip_daily_cdr_files'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.domain.co.uk/file_upload.php');
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA);
$response = curl_exec($curl);
curl_close ($curl);
然后文件_upload.php如下所示:

$encoded_file = $_POST['file'];
$decoded_file = base64_decode($encoded_file);
file_put_contents($_POST["location"].'/'.$decoded_file, $decoded_file);
我做了一个var_转储($response);要查看输出,请执行以下操作:

Warning: file_put_contents(public_html/admin/billing/voip_daily_cdr_files/): failed to open stream: No such file or directory in /home/user/public_html/admin/file_upload.php on line 4
我上传文件的位置是否不正确?

使用文件获取内容('php://input“)以获取post数据

<?php
     $encoded_file  = file_get_contents('php://input');// this is you for getting post data
     print_r($encoded_file );
    }
文件路径“public\u html/admin/billing/voip\u daily\u cdr\u files/”不正确请尝试此操作

“/billing/voip\u daily\u cdr\u files”如果不起作用,则应检查正确的文件路径。

需要考虑两件事:(1)目标位置是否位于
file\u upload.php
所在目录的子目录中?(2) 是否所有子文件夹都存在
file\u put\u contents
不会自动创建子文件夹,因此您必须事先确保目录结构。此外,在
file\u upload.php
中,您使用
$decoded\u file
作为文件名(第一个参数)和文件内容(第二个参数).file_upload.php位于/public_html/admin/file_upload.php,要上载到的目录(确实存在)是/public_html/admin/billing/voip_daily_cdr_files/好的,文件路径似乎是正确的,但您仍然使用
$decoded_file
作为文件名。您是否可以尝试发送
$filename
以及其他
$\u POST
变量,然后执行
文件放置内容($\u POST[“location”]。/。$\u POST[“filename”],$decoded\u file)?我现在并不是说对发布的变量进行验证/清理,但您应该记住这一点-您应该将发送到文件\u upload.php的所有数据视为不安全的。请看我的代码,这是我的路径,但是警告/错误显示了这个路径,如果它在public\u html中更改了
“location”=>“billing/voip\u daily\u cdr\u files”
“location”=>“public\u html/billing/voip\u daily\u cdr\u files”
。目录结构是/public\u html/admin/billing/voip\u daily\u cdr\u files/也尝试了这个路径但是仍然存在相同的错误,即找不到目录Where is billing directory?