php cURL post发送文件不工作
我试图通过php cURL post发送一个.txt文件,但没有成功 我的cURL代码如下所示: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(
$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[两者]上没有得到任何错误。。。再次感谢您的帮助:)我刚刚编辑了我的代码,因为我一开始就漏掉了一行,但不知道这是否相关……谢谢!我回家后再试试!