使用cURL的PHP远程文件上传
我有一段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'
$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?