我試圖發送一個POST請求到一個API和該請求的一部分我添加一個CSV文件來獲取基於我提供的電子郵件和數字的回報標記。前幾行代碼使用從我的數據庫中檢索的數據,並且生成文件並使用文本數據填充它是正確的。問題在於我的cURL。當我在PostMan中發出這個請求時,結果非常好,我實際上使用PostMan的PHP-curl生成的代碼來編寫這個請求。然而,該行沒有在cURL POST中正確傳遞CSV文件在PHP
filename=\"".$filename."\"\r\n
不,出於某種原因,造就剛正確之前填充文件和API日誌說,文件中沒有任何數據。這兩個文件都位於同一個目錄中,所以我真的對不正確的操作感到不知所措。
$file = fopen($filename, "w");
while ($row2 = mysqli_fetch_array($query2)){
$txt = "$row2[email], $row2[firstname], $row2[lastname],
$row[company], $row2[mobilephone]\n";
echo $txt;
fwrite($file, $txt);
}
$curl = curl_init();
echo $filename."\n";
curl_setopt_array($curl, array(
CURLOPT_URL => "https://example.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n
Content-Disposition: form-data;
name=\"token\"\r\n\r\12345\r\n
------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n
Content-Disposition: form-data; name=\"datafile\";
filename=\"".$filename."\"\r\n
Content-Type: text/csv\r\n\r\n\r\n
------WebKitFormBoundary7MA4YWxkTrZu0gW--",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
任何人都可以發現我在這裏做的不正確嗎?
注:我已經取代多個領域,並與隱私/安全原因,僞數據串
你傳遞字符串而不是數組或json的任何原因? – Kisaragi
我簡單地使用Postman在其應用程序中成功創建調用後使用PHP-curl生成的代碼 – Jodo1992