【发布时间】:2017-06-08 12:19:31
【问题描述】:
我不是一个 PHP 人,但我试图将一个 cli CURL 调用移植到 PHP ... 最初我有:
curl -i -H "Content-Type: text/csv" -X POST --data-binary @$filepath $destination
我试着把它变成:
<?php
$data['Filedata'] = "@".$filepath;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $destination.'/_');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/csv"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
?>
问题是这会导致额外的标头被附加到目的地,包含------------------------------6614b0cf8aae
Content-Disposition: form-data; name=Filedata; filename=$filepath Content-Type: application/octet-stream.
我认为这是因为我使用 $data['Filedata'] 的方式,所以我尝试将 CURLOPT_POSTFIELDS 行替换为下面的行,但这最终只会发布路径字符串而不是文件本身。
curl_setopt($ch, CURLOPT_POSTFIELDS, "@".$filepath);
有人介意指出我缺少什么吗?就像我说的,不是 PHP 人!
【问题讨论】:
-
你试过 curl_setopt($ch, CURLOPT_HEADER, 0); ?