[英]php curl v python request send file
我正在嘗試使用 php curl 發送文件,嘗試復制以下 python 請求:
requests.post( f'{url}/sample', data={"forced": True}, files={'sample': open(filepath, 'rb')}, verify=verify_ssl )
下面是我嘗試使用 php curl 執行相同的請求,但是我總是收到錯誤 400,“缺少樣本”:
$post = array(
'files'=>array(
'sample'=> file_get_contents($_FILES['file']['tmp_name']),
),
'data'=>array(
'forced'=>TRUE,
),
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url.'/sample');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Skip SSL Verification
$result = curl_exec ($ch);
curl_close ($ch);
我在這里做錯了什么?
該 Python 請求似乎是multipart/form-data
,而不是像 PHP 示例那樣的 JSON 請求。
要使用 curl 上傳文件,請參閱CURLFile
class。
我認為它應該是這樣的:
<?php
$sample = new \CURLFile($_FILES['file']['tmp_name']);
$post = [
'forced' => true,
'sample' => $sample,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url.'/sample');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.