我正在尝试从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错误:
上传的错误文件:请求不包含多部分/表单数据或多部分/混合流,内容类型标头为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调用中,但我不知道为什么。
任何帮助将不胜感激。
答案 0 :(得分:0)
import pandas as pd
temp=u"""Column_1;Unnamed_column;Column_2;Unnamed_column
a;d;f;g
1;5;5;6
7;8;9;4"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep=";", header=[0,1])
print (df)
Column_1 Unnamed_column Column_2 Unnamed_column
a d f g
0 1 5 5 6
1 7 8 9 4
a = df.columns.get_level_values(0)
b = df.columns.get_level_values(1)
df.columns = [a.to_series().mask(lambda x: x.str.startswith('Unnamed')).ffill(), b]
print (df)
Column_1 Column_2
a d f g
0 1 5 5 6
1 7 8 9 4
使用边界参数进行封装,您可以将边界值作为字符串传递
content-type: multipart/form-data
边界是字符串“-”,后跟随机字符串。
答案 1 :(得分:0)
如果我对请求有任何奇怪的问题,我总是将请求放入postman并在其中进行测试,因为它会为您编译大多数标题和选项,然后只需点击右上角的代码按钮以所需的任何语言生成代码。
对于您的情况,您可以将$ data变量数据转储(dd),并将其复制到邮递员字段之一,然后设置url和请求类型,然后运行它,然后看看您得到了什么。
仅是有关如何调试此类问题的建议,希望对您有所帮助!祝你好运!