从Postman导出带有文件的HTTP POST请求不起作用



我有一个使用POST的Postman HTTP请求,POST是保存在关键字plsm_xls_file[]下的文件的表单数据字段。该文件在本地文件系统中。

这个请求完全从POSTMAN运行,但当我试图从代码段将其导出到PHP Curl时,我会得到这样的结果:


$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mydomain.nl/po_upload3.php?xlsimport=2',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('plsm_xls_file[]'=> new CURLFILE('/C:/Users/myuser/Documents/vita_debug/201216_FG_PC_68715.xlsx'),'template_id' => '170'),
CURLOPT_HTTPHEADER => array(
'cookie: PHPSESSID=509e15pepo3ok80nd74jhdis33;'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

它不起作用。这就像文件没有正确地附加到HTTP请求。

编辑:我终于明白了问题是POSTMAN可以访问我的文件系统,但我试图运行导出片段的远程服务器却不能——这对我来说是一个非常愚蠢的错误。

我之前遇到过这个问题,虽然从来没有真正的解决方案(即使在PHP bug跟踪器中(,但我能够通过不在setopt_array命令中包含该文件来解决它。

PHP 7.2 CURLFile给出";无效的文件名"警告

简而言之,尝试将CURLOPT_POSTFIELDS选项从curl_setopt_array调用中删除,并添加以下内容:

curl_setopt($curl, CURLOPT_POSTFIELDS, array('plsm_xls_file[]'=> new CURLFILE('/C:/Users/myuser/Documents/vita_debug/201216_FG_PC_68715.xlsx'),'template_id' => '170'));

最新更新