【问题标题】:Export HTTP POST request with file from Postman not working使用 Postman 的文件导出 HTTP POST 请求不起作用
【发布时间】:2021-03-13 21:49:45
【问题描述】:

我有一个使用 POST 的 Postman HTTP 请求,它是保存在键 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 可以访问我的文件系统,但我尝试运行导出的 sn-p 的远程服务器却没有——这是我的一个非常愚蠢的错误。

【问题讨论】:

  • 错误是什么?

标签: php http curl postman


【解决方案1】:

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

PHP 7.2 CURLFile Gives "Invalid Filename" Warning

简而言之,尝试将您的 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'));

【讨论】:

  • 还是不行。也许是我的 PHP 版本?我正在使用 5.6。我将尝试从数组中取出其余选项。感谢您的帮助
  • 理论上它应该在 5.6 中工作,但 5.6 的 EOL 大约是一年前,所以我很难排除故障,因为我没有可用的实例。尝试在curl_exec 之后添加此内容,以便我们获得有关响应的一些信息:print_r(curl_getinfo()); exit(0);
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
相关资源
最近更新 更多