php - 尝试在 CURL POST 调用中发送文件时出错
问题描述
我正在尝试从我的 Laravel 应用程序调用 Bullhorn API 以将文档转换为 HTML,但看起来该文件没有附加到调用中。下面是我的代码:
$data = curl_file_create("full/path/to/file.docx", 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'testcv');
$ch = curl_init();
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
但是我收到以下 500 错误:
已上传错误文件:请求不包含 multipart/form-data 或 multipart/mixed 流,内容类型标头为 application/x-www-form-urlencoded
当我尝试Content-Type
明确设置时:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: multipart/form-data'
));
我仍然收到 500 错误,只是略有不同:
已上传错误文件:请求被拒绝,因为未找到多部分边界
我不认为 Bullhorn API 有问题,因为通过命令行执行以下调用可以正常工作:
curl -X POST "https://restXXX.bullhornstaffing.com/rest-services/{corptoken}/resume/convertToHtml?format=docx&BhRestToken={bhRestToken}" -F "file=@full\path\to\file.docx"
我假设由于某种原因该文件没有附加到我的 PHP 调用中,但我不知道为什么。
任何帮助将不胜感激。
解决方案
如果我对请求有任何奇怪的问题,我总是将请求放入邮递员并在那里进行测试,因为它会为您编译大部分标题和选项,然后只需点击右上角的代码按钮以生成任何语言的代码想。
对于您的情况,您可以对 $data 变量进行数据转储(dd)并将其复制到邮递员字段之一,然后设置 url 以及请求类型,然后运行它并查看您返回的内容。
只是关于如何调试此类问题的建议,希望对您有所帮助!祝你好运!
推荐阅读
- android - 为什么 camerax 示例项目不将常量放在一个类中?
- c# - ASP.NET Core Web API 自定义路由不起作用
- django - 2 使用 cookiecutter-django 的 django 模板中的表单
- laravel - 如何使用 post 方法将请求参数从控制器传递到 Laravel 中的另一个控制器方法?
- angular - Visual Studio Code 无法监视此大型工作区中的文件更改”(错误 ENOSPC)#29
- javascript - 如何仅使用 index.js 和 package.json 以及节点模块文件启动 nodejs 项目
- python - QuerySet:过滤条目
- sqlite - 创建具有自动增量的表
- angular - mat-table 以编程方式跳到特定行
- php - 如何限制在页面中打印空行