PHP Curl发布没有标题的文件

时间:2014-02-19 17:30:51

标签: php curl

我不是一个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行替换,但这只是最后发布路径字符串而不是文件本身。< / p>

curl_setopt($ch, CURLOPT_POSTFIELDS, "@".$filepath);

任何人都在指出我缺少的东西?就像我说的,不是一个PHP人!

1 个答案:

答案 0 :(得分:2)

直接加载文件内容即可。目前,您正在执行与原始curl命令行不同的键/值削减POST数据。

curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($filepath));