php curl post $_FILES issue



我正在尝试通过 php curl post 请求发送一个.txt文件以获取其内容,但没有成功。

关键是,如果我在curl_exec($ch)响应$result $result进行var_dump($_FILES),它会显示一个空数组,但如果我尝试使用 $_POST

array(
    [uploaded_file] => 
        [name] => 'absolute/path/to/file.txt'
        [mime] => 'text/plain'
        [postname] => 'file.txt'
)

如何将该文件作为 $_FILES 变量传递?

这是我的卷曲发送.php卷曲脚本:

$filedata = curl_file_create('../path/to/file.txt', 'text/plain', 'file.txt');
$array = array(
    'file' => $filedata
)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://domain_name.com/url/to/script.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
$result = curl_exec($ch);
curl_close($ch);    

这是接收.php脚本:

if(file_exists($_FILES['uploaded_file']['tmp_name']) && is_uploaded_file($_FILES['uploaded_file']['tmp_name'])){
    $contents = file_get_contents($_FILES['uploaded_file']['tmp_name']);
    $data = explode('/',$contents);
}

但它从未进入 if 语句...

不能通过 cURL 传递文件以使其显示在 $_FILES 变量中。

这是因为 $_FILES 变量用于使用 HTML 表单提交的上传文件。

出于安全原因,必须先加密文件,然后在接收方页面中解密。我建议您使用一种加密方法,让您选择加密的密钥,例如sha1。

您可以在此处找到更多信息:https://stackoverflow.com/a/15200804/2342558

最新更新