php cURL post发送文件不工作

php cURL post发送文件不工作,php,curl,Php,Curl,我试图通过php cURL post发送一个.txt文件,但没有成功 我的cURL代码如下所示: $filedata = curl_file_create('../path/to/file.txt', 'text/plain', 'file.txt'); $array = array( 'action' => 1, 'file' => $filedata, 'sec_secure' => $sec_secure, ) $ch = curl_init(

我试图通过php cURL post发送一个.txt文件,但没有成功

我的cURL代码如下所示:

$filedata = curl_file_create('../path/to/file.txt', 'text/plain', 'file.txt');

$array = array(
    'action' => 1,
    'file' => $filedata,
    'sec_secure' => $sec_secure,
)

$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);

$response = 0;

if($sec_secure == $result){
    $response = 1;
}
以及接收script.php:

if(isset($_FILES['file'])){
    $contents = file_get_contents($_FILES['file']['tmp_name']);
    $response = $_POST['sec_secure'];
}
else{
    $response = '';
}
echo $response;
问题是总是给我$response=0

有人知道为什么会发生这种情况,以及如何使其正常工作吗

编辑:

我在$array后面漏掉了下面这一行:

$array = http_build_query($array);

可能是这导致了问题?

您必须为文件传输设置
enctype=“multipart/form data”


CURLOPT_标题设置为true

CURLOPT_HTTPHEADER
设置为
array(“内容类型:多部分/表单数据”)

在卷曲中添加标题

$array = array(
    'action' => 1,
    'file' => $filedata,
    'sec_secure' => $sec_secure,
)
$array = json_encode($array);

$headers = array(

        'Content-Type: application/json',
            'Content-Length: ' . strlen($array)
    );

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $array);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
$result = curl_exec($ch);
curl_close($ch);

$response = 0;

if($sec_secure == $result){
    $response = 1;
}

更改代码如下。

为什么要将
CURLOPT_HEADER
设置为
false
?还需要为文件传输设置
enctype=“multipart/form data”
。@RamC您能告诉我如何设置enctype吗?我是否需要将
CURLOPT_HEADER
设置为
true
?将
CURLOPT_HEADER
设置为
数组(“内容类型:多部分/表单数据”)和check@RamC在
CURLOPT_标头
CURLOPT_HTTPHEADER
CURLOPT_标头
上设置为true?谢谢你的回答!以下内容在没有标题的情况下非常有效:,请尝试一下。。。它将发送文件,然后打印文件内容。OP基本上也是这样做的,但是用1代替了文件内容,所以我不认为它的标题是什么。谢谢!我回家后再试试。我刚试过你的代码,仍然返回值0。我不知道如何解决这个问题…代码是我之前写的。我开始想,也许我不必把它作为
$\u文件
检索,而是作为
$\u帖子
检索。而且我在errorlog[两者]上没有得到任何错误。。。再次感谢您的帮助:)我刚刚编辑了我的代码,因为我一开始就漏掉了一行,但不知道这是否相关……谢谢!我回家后再试试!