簡體   English   中英

php curl v python 請求發送文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM